ubuntu apt-get安装tzdata非交互式

gg0vcinb  于 2022-11-22  发布在  其他
关注(0)|答案(7)|浏览(453)

当我试着

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

但它没有按预期工作。

p8ekf7hl

p8ekf7hl1#

这是我用的剧本

(更新版本,来自@elquimista的意见)

#!/bin/bash

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

看起来工作正常。
作为一个衬垫:

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

htrmnn0y2#

如果有人想在Dockerfile中实现它,请使用下面的代码。

RUN DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata
9vw9lbht

9vw9lbht3#

为了避免直接使用符号链接,并且只运行一次配置,我建议使用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
col17t5w

col17t5w4#

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

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

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

ca1c2owp

ca1c2owp5#

所有这方面的功劳都应归于@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
9q78igpj

9q78igpj6#

我是这样做的:

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包将在不要求用户输入的情况下安装。时区将设置为Africa/Abidjan,就像您在通常收到的提示中输入了1和1一样。然后,我用最后两个命令将时区更改为所需的时区。
除了1和1,你可以使用你想要的地理区域和城市/地区的实际数字,但在我看来,这些数字可能会改变。

f0brbegy

f0brbegy7#

以下是对我有效的方法:

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

相关问题