首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dpkg-reconfigure tzdata的非交互方法

dpkg-reconfigure tzdata的非交互方法
EN

Stack Overflow用户
提问于 2011-12-30 01:46:36
回答 6查看 67.8K关注 0票数 89

当我第一次设置Ubuntu服务器时,我确保先使用aptitude install tzdata,然后使用dpkg-reconfigure tzdata,以便正确地设置时区。

我正在尝试用一个脚本自动化我的服务器设置,并注意到这一部分在自动化方面有些困难,因为它需要一个带有用户干预的交互式会话。

有没有办法在不交互的情况下使用dpkg-reconfigure?

EN

回答 6

Stack Overflow用户

发布于 2013-12-20 07:24:13

swill的答案不是如何正确地完成它。如果您想要包的无人参与/脚本化dpkg配置,那么您需要使用debconf预播机制。

在您的情况下,这意味着您必须执行以下操作:

  • 设置以下环境变量以避免debconf尝试向用户询问任何问题:

使用以下preseed.txt文件(或您需要的任何其他设置)预先设定export DEBIAN_FRONTEND=noninteractive debconf:

tzdata tzdata /区域选择欧洲tzdata tzdata/区域/欧洲选择柏林

  • 您可以通过运行以下命令来设置上述预设种子文件:

debconf-set-selections /your/preseed.txt

  • you现在既可以通过apt安装tzdata (如果还没有安装的话),也可以运行dpkg-reconfigure。最后,tzdata将根据您在debconf预置种子文件中指定的内容进行设置。

请记住,您可以使用debconf预置实现更多的自动化。例如,在我的预置种子中,我总是设置:

代码语言:javascript
复制
locales locales/locales_to_be_generated multiselect     en_US.UTF-8 UTF-8
locales locales/default_environment_locale      select  en_US.UTF-8

您始终可以通过运行debconf-get-selections来检查当前系统的debconf设置。输出应该会让您了解使用debconf预置可以自动完成多少系统配置。

票数 75
EN

Stack Overflow用户

发布于 2017-02-20 20:37:11

16.04中存在一个错误(https://bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806,在编写此答案时尚未修复),导致在运行dpkg-reconfigure -f noninteractive tzdata时使用旧值覆盖/etc/timezone的内容。修复方法如下(来自上述错误报告):

代码语言:javascript
复制
$ sudo ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
$ sudo dpkg-reconfigure --frontend noninteractive tzdata
Current default time zone: 'America/New_York'
Local time is now:      Mon Feb 20 07:30:33 EST 2017.
Universal Time is now:  Mon Feb 20 12:30:33 UTC 2017.
$ cat /etc/timezone
America/New_York

无需手动更改/etc/timezone的内容。这对我在Ubuntu 16.04.2 LTS上是有效的。

票数 36
EN

Stack Overflow用户

发布于 2017-12-20 23:08:19

Dockerfile中执行此操作

代码语言:javascript
复制
FROM ubuntu:xenial

## for apt to be noninteractive
ENV DEBIAN_FRONTEND noninteractive
ENV DEBCONF_NONINTERACTIVE_SEEN true

## preesed tzdata, update package index, upgrade packages and install needed software
RUN truncate -s0 /tmp/preseed.cfg; \
    echo "tzdata tzdata/Areas select Europe" >> /tmp/preseed.cfg; \
    echo "tzdata tzdata/Zones/Europe select Berlin" >> /tmp/preseed.cfg; \
    debconf-set-selections /tmp/preseed.cfg && \
    rm -f /etc/timezone /etc/localtime && \
    apt-get update && \
    apt-get install -y tzdata

## cleanup of files from setup
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

在我的实验中,我确定了删除/etc中的文件是必要的。

票数 35
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8671308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档