apt-get install tzdata非交互式


109

当我尝试

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

但它没有按预期工作。

Answers:


174

这是我使用的脚本

(更新版本带有来自@elquimista意见的输入)

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive

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

似乎工作正常。

作为一个班轮:

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata

45
如果您对UTCDEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
感到满意,请选择

4
真是痛苦。如果没有提示我设置默认时区(在软件包安装过程中出现配置提示?这是谁的想法?),我就无法安装tzdata,并且如果没有先安装tzdata,就无法设置默认时区。如果您传入EOF,它已经默认为UTC。为什么不这样做,让用户以后再更新呢。或者让我设置TZ环境变量,并让tzdata查找。
theferrit32 '19

3
ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime之前要做的步骤DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata是我安装w / oa提示符的唯一方法。
fncomp

我也一样,唯一可行的方法是首先放置ln语句。@PYA。
jpruiz114

81

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

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

4
这是可以做到作为一行:RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ...DEBIAN_FRONTEND变量必须为设置install部分。如果&&update零件的之前设置,它将不起作用。
丹尼尔·史蒂文斯

6

所有功劳应归功于@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

我编辑了原始答案以反映订单更改。
sebisnow

5

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

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

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


2

这是我的做法:

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,然后使用所需的地理区域和城市/区域,但是在我看来,这些数字可能会发生变化。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.