Неинтерактивный метод для dpkg -configure tzdata

Когда я впервые настраиваю сервер Ubuntu, я должен убедиться, что я aptitude install tzdata, а затем dpkg-reconfigure tzdata, чтобы я правильно установил часовой пояс.

Я пытаюсь автоматизировать настройку своего сервера с помощью сценария и заметил, что этот фрагмент вбивает в себя гаечный ключ, поскольку он является автоматическим, поскольку он требует интерактивного сеанса с участием пользователя.

Есть ли способ использовать dpkg -configure без интерактивности?

65 голосов | спросил kenny 29 ThuEurope/Moscow2011-12-29T21:46:35+04:00Europe/Moscow12bEurope/MoscowThu, 29 Dec 2011 21:46:35 +0400 2011, 21:46:35

5 ответов


0

Я нашел следующие детали для вас.

https://serverfault.com/a/84528

Изменить: (скопируйте и вставьте по указанной выше ссылке ...)
Вам необходимо указать интерфейс как «неинтерактивный», и он сохранит ваши текущие настройки.

dpkg-reinfigure примет текущие настройки системы как евангелие, поэтому просто измените часовой пояс, как обычно, и запустите его с неинтерактивным флагом

например. для меня, чтобы перейти на "Европа /Дублин", где я нахожусь:

# echo "Europe/Dublin" > /etc/timezone    
# dpkg-reconfigure -f noninteractive tzdata

Очевидно, что это позволяет вам использовать puppet /cfengine так же, как вы хотите распространять /etc /timezone.

ответил swill 29 ThuEurope/Moscow2011-12-29T22:02:19+04:00Europe/Moscow12bEurope/MoscowThu, 29 Dec 2011 22:02:19 +0400 2011, 22:02:19
0

Ответ от swill не в том, как это сделано правильно. Если вам нужна конфигурация пакетов dpkg без участия пользователя или с помощью сценариев, то вы должны использовать механизм предварительного заполнения debconf.

В вашем случае это означает, что вы должны сделать следующее:

  • установите следующие переменные окружения, чтобы debconf не пытался задавать пользователю какие-либо вопросы:

    export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
    
  • затем запустите debconf с помощью следующего файла preseed.txt (или любых других настроек, которые вы пожелаете):

    tzdata tzdata/Areas select Europe
    tzdata tzdata/Zones/Europe select Berlin
    
  • вы установили вышеуказанный файл preseed, выполнив:

    debconf-set-selections /your/preseed.txt
    
  • теперь вы можете установить tzdata (если она еще не установлена) через apt или запустить dpkg-reconfigure. В конце концов, tzdata будет настроен в соответствии с тем, что вы указали в файле preseed debconf.

Помните, что вы можете автоматизировать многое другое, используя предварительное задание debconf. Например, в моих семенах я всегда устанавливаю:

locales locales/locales_to_be_generated multiselect     en_US.UTF-8 UTF-8
locales locales/default_environment_locale      select  en_US.UTF-8

Вы всегда можете проверить настройки debconf в вашей текущей системе, запустив debconf-get-selections. Вывод должен дать вам некоторое представление о том, какую часть конфигурации системы вы можете автоматизировать с помощью предварительного заполнения debconf.

ответил josch 20 FriEurope/Moscow2013-12-20T03:24:12+04:00Europe/Moscow12bEurope/MoscowFri, 20 Dec 2013 03:24:12 +0400 2013, 03:24:12
0

Существует ошибка ( https://bugs.launchpad.net /ubuntu /+ source /tzdata /+ bug /1554806 (не исправлено на момент написания этого ответа) в 16.04, что вызывает содержание /etc/timezone будет перезаписан старым значением при запуске dpkg-reconfigure -f noninteractive tzdata. Исправление заключается в следующем (из приведенного выше сообщения об ошибке):

$ 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.

ответил proc-self-maps 20 FebruaryEurope/MoscowbMon, 20 Feb 2017 15:37:11 +0300000000pmMon, 20 Feb 2017 15:37:11 +030017 2017, 15:37:11
0

Делаем это в Dockerfile:

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 echo "tzdata tzdata/Areas select Europe" > /tmp/preseed.txt; \
    echo "tzdata tzdata/Zones/Europe select Berlin" >> /tmp/preseed.txt; \
    debconf-set-selections /tmp/preseed.txt && \
    rm /etc/timezone && \
    rm /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.

ответил Nils Ballmann 20 WedEurope/Moscow2017-12-20T18:08:18+03:00Europe/Moscow12bEurope/MoscowWed, 20 Dec 2017 18:08:18 +0300 2017, 18:08:18
0

Продвижение ответа josch ; установите значения в базе данных debconf и удалите /etc/{localtime,timezone} перед запуском dpkg-reconfigure: -

$ echo "tzdata tzdata/Areas select Europe" > some/file.txt
$ echo "tzdata tzdata/Zones/Europe select Berlin" >> some/file.txt
$ sudo debconf-set-selections some/file.txt
$ sudo rm /etc/timezone
$ sudo rm /etc/localtime
$ sudo dpkg-reconfigure -f noninteractive tzdata
Current default time zone: 'Europe/Berlin'
Local time is now:      Thu Sep  1 17:13:16 CEST 2016.
Universal Time is now:  Thu Sep  1 15:13:16 UTC 2016.

Известно, что этот метод работает с: -

  • Ubunty Trusty (14.04.5 LTS)
ответил jah 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 01 Sep 2016 18:17:47 +0300 2016, 18:17:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132