apt-get install tzdata 非交互式
apt-get install tzdata noninteractive
当我尝试
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
但它没有按预期工作。
这是我使用的脚本
(更新版本,来自@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
所有功劳都归功于@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 语句创建一个文本文件,其中包含地理区域菜单和 city/region 菜单的选择编号。然后使用此文件为 apt-get install 命令提供输入。 tzdata 包将在不要求任何用户输入的情况下安装。时区将设置为 Africa/Abidjan,就像您输入 1 和 1 以响应您通常会收到的提示一样。然后我用最后两个命令将时区更改为我想要的时区。
您可以使用地理区域的实际数字和您想要的 city/region,而不是 1 和 1,但在我看来,这些数字可能会改变。
我最近在构建 Cingulata 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
为了避免直接使用符号链接和 运行 配置一次,我建议使用 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
当我尝试
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
但它没有按预期工作。
这是我使用的脚本
(更新版本,来自@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
所有功劳都归功于@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 语句创建一个文本文件,其中包含地理区域菜单和 city/region 菜单的选择编号。然后使用此文件为 apt-get install 命令提供输入。 tzdata 包将在不要求任何用户输入的情况下安装。时区将设置为 Africa/Abidjan,就像您输入 1 和 1 以响应您通常会收到的提示一样。然后我用最后两个命令将时区更改为我想要的时区。
您可以使用地理区域的实际数字和您想要的 city/region,而不是 1 和 1,但在我看来,这些数字可能会改变。
我最近在构建 Cingulata 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
为了避免直接使用符号链接和 运行 配置一次,我建议使用 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