apt-get install tzdata noninteractive

时间:2017-06-02 14:54:32

标签: bash ubuntu dockerfile apt-get

当我尝试

apt-get install -y tzdata

显示选择时区的命令行选项。我试图在脚本中使用它来进行一些设置,如何在没有用户输入的情况下运行apt-get?

我知道要重新配置我能做的tzdata

echo "America/New_York" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata

但是在安装时我需要它完全运行,即使它没有设置正确的时区,我总是可以重新配置它。

我试过

echo 5 | apt-get install -y tzdata

但它没有按预期工作。

7 个答案:

答案 0 :(得分:80)

这是我使用的脚本

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive

apt-get install -y tzdata
ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
dpkg-reconfigure --frontend noninteractive tzdata

似乎工作正常。

答案 1 :(得分:9)

如果有人想在Dockerfile中实现它,请按以下方式使用。

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install tzdata

答案 2 :(得分:5)

我最近在构建Cingulata FHE库的Dockerfile中找到了以下解决方案:

ln -snf /usr/share/zoneinfo/$(curl https://ipapi.co/timezone) /etc/localtime

它基本上使用ipapi.co提供的API来检索时区信息。这样会自动正确配置时区,而无需跳过对话框并使用默认(UTC)。

答案 3 :(得分:3)

这对我有用:

from ubuntu:bionic
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y tzdata

RUN unlink /etc/localtime
RUN ln -s /usr/share/zoneinfo/America/New_York /etc/localtime

答案 4 :(得分:1)

所有功劳应归功于@PYA,但正确的顺序应为:

ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
export DEBIAN_FRONTEND=noninteractive
apt-get install -y tzdata
dpkg-reconfigure --frontend noninteractive tzdata

答案 5 :(得分:1)

这是我的做法:

echo 1 > input.txt
echo 1 >> input.txt
apt-get install -y tzdata < input.txt
ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
echo America/Los_Angeles > /etc/timezone

前两个echo语句创建一个文本文件,其中包含地理区域菜单和城市/区域菜单的选择号。然后,使用该文件为apt-get install命令提供输入。无需任何用户输入即可安装tzdata软件包。时区将被设置为非洲/阿比让,就像您通常会收到提示时输入1和1一样。然后,使用最后两个命令将时区更改为所需的时区。

您可以使用实际的数字代替所需的地理区域和城市/区域,而不是1和1,但在我看来,这些数字可能会发生变化。

答案 6 :(得分:1)

为了避免直接使用符号链接并只运行一次配置,我建议使用 debconf-set-selections 命令:

echo 'tzdata tzdata/Areas select Europe' | debconf-set-selections
echo 'tzdata tzdata/Zones/Europe select Paris' | debconf-set-selections
DEBIAN_FRONTEND="noninteractive" apt install -y tzdata