Bash apt获取安装tzdata非交互式

Bash apt获取安装tzdata非交互式,bash,ubuntu,dockerfile,apt-get,Bash,Ubuntu,Dockerfile,Apt Get,当我试图 apt-get install -y tzdata 此时将显示用于拾取时区的命令行选项。我试图在脚本中使用它来进行一些设置,如何在没有用户输入的情况下运行apt 我知道我可以重新配置tzdata echo "America/New_York" > /etc/timezone dpkg-reconfigure -f noninteractive tzdata 但当安装时,我需要它完全运行,即使它没有设置正确的时区,我总是可以重新配置它 我试过了 echo 5 | apt-get

当我试图

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

我知道我可以重新配置tzdata

echo "America/New_York" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
但当安装时,我需要它完全运行,即使它没有设置正确的时区,我总是可以重新配置它

我试过了

echo 5 | apt-get install -y tzdata

但它没有按预期工作。

这是我使用的脚本

(更新版本,从@elquimista的评论中输入)

看起来很好用

作为一个班轮:

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

这方面的所有信用都应归于@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

如果有人想在
Dockerfile
中实现它,请使用以下命令

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install tzdata
我是这样做的:

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 1>input.txt
echo 1>>input.txt
apt get install-y tzdata/etc/时区
前两个echo语句创建一个文本文件,其中包含地理区域菜单和城市/地区菜单的选择编号。然后,该文件用于向apt get install命令提供输入。tzdata软件包将在不要求任何用户输入的情况下安装。时区将设置为Africa/Abidjan,就好像您输入1和1是为了响应通常会收到的提示一样。然后我用最后两个命令将时区更改为我想要的


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

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

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

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

以下是对我有效的方法:

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

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


如果您对UTC没有意见,那么这里有一句话:
DEBIAN_FRONTEND=noninteractive apt get install-y tzdata
这太痛苦了。如果tzdata没有提示我设置默认时区,我就无法安装tzdata(软件包安装期间的配置提示?这是谁的主意?),如果没有首先安装tzdata,我就无法设置默认时区。如果您传入EOF,它已经默认为UTC。为什么不这样做,让用户以后更新,如果他们愿意的话。或者让我设置TZ环境变量并让tzdata查找它。执行
ln-fs/usr/share/zoneinfo/America/New_York/etc/localtime
step-before
DEBIAN\u FRONTEND=noninteractive-apt-get-install-y-tzdata
是在没有提示的情况下安装它的唯一方法。我也是这样,唯一有效的方法是将ln语句放在第一位@PYA.我编辑了原始答案以反映订单的变化。这可以作为一行来完成:
运行apt get update&&DEBIAN_FRONTEND=非交互式apt get install-y--无安装建议…
必须为
安装部分设置
DEBIAN_FRONTEND
变量。如果在
更新
部分的
&&
之前设置,则它不起作用。在单独的行上发布
ARG DEBIAN_frontendend=noninteractive
有时对我有效,而在@DanielStevens推荐的单行上则始终对我有效。使用的好主意,前提是要设置的时区与机器所在的时区相同。这可能不适用于亚洲的用户,但适用于美国的服务器。
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
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