apt-get install tzdata noninteractive

PYA*_*PYA 55 bash ubuntu apt-get dockerfile

当我尝试

apt-get install -y tzdata
Run Code Online (Sandbox Code Playgroud)

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

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

echo "America/New_York" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Run Code Online (Sandbox Code Playgroud)

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

我试过了

echo 5 | apt-get install -y tzdata
Run Code Online (Sandbox Code Playgroud)

但它没有按预期工作.

PYA*_*PYA 109

这是我使用的脚本

#!/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
Run Code Online (Sandbox Code Playgroud)

似乎工作正常.

  • 如果你对UTC很好,这里有一个单行:`DEBIAN_FRONTEND = noninteractive apt-get install -y tzdata` (28认同)
  • 在`DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata` 之前执行`ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime` 步骤是我可以通过它安装w/oa 提示的唯一方法。 (3认同)
  • 真是痛苦。如果没有提示我设置默认时区(在软件包安装过程中出现配置提示?这是谁的想法?),我将无法安装tzdata,并且如果没有先安装tzdata,就无法设置默认时区。如果您传入EOF,它已经默认为UTC。为什么不这样做,让用户以后再更新呢。或者让我设置TZ环境变量,并让tzdata查找。 (2认同)

Pas*_* H. 24

为了避免直接使用符号链接并仅运行配置一次,我建议使用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
Run Code Online (Sandbox Code Playgroud)

  • 这确实应该是公认的答案。 (2认同)

Pat*_*ick 10

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

ln -snf /usr/share/zoneinfo/$(curl https://ipapi.co/timezone) /etc/localtime
Run Code Online (Sandbox Code Playgroud)

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

  • 使用 https://ipapi.co/timezone 是明智之举,前提是要设置的时区与机器所在的位置相同。例如,这可能不适用于亚洲的用户,但适用于美国的服务器。 (2认同)

Jea*_*uiz 7

对此的所有功劳都应该归功于@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
Run Code Online (Sandbox Code Playgroud)


You*_*jae 5

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

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install tzdata
Run Code Online (Sandbox Code Playgroud)

  • 这可以通过一行完成: ```RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ...``` 必须为“安装”部分。如果在“更新”部分的“&&”之前设置,则不起作用。 (12认同)