Вопрос: автоматизировать dpkg-reconfigure tzdata


Я использую марионетку для администрирования кластера серверов debian. Мне нужно изменить часовой пояс каждой машины на кластере. Правильный способ debian сделать это - использовать dpkg-reconfigure tzdata, Но я могу только изменить его, если я использую диалог. Есть ли способ автоматизировать это из оболочки, поэтому я могу просто написать Exec, чтобы сделать это проще?

Если нет, я думаю, что следующий лучший способ, вероятно, состоял бы в том, чтобы марионеточный дистрибутив /etc/timezone а также /etc/localtime с правильными данными по кластеру.

Любой вход оценивается!


51
2017-11-13 18:45


Источник




Ответы:


Вы должны указать интерфейс как «неинтерактивный», и он сохранит ваши текущие настройки.

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

например для меня перейти на «Европа / Дублин», где я:

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

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


90
2017-11-13 18:57



как альтернатива изменяющимся разрешениям, вы можете сделать что-то подобное. echo 'Europe/Dublin' | sudo tee /etc/timezone > /dev/null - gorelative
Для полноты, другой способ эха через sudo sudo bash -c 'echo "Europe/Dublin" > /etc/timezone' - MartyMacGyver
Берегись! Новые версии Ubuntu / Debian больше не работают. Поведение изменилось. bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806 - gertvdijk


Поскольку принятый ответ больше не работает (Debian Jessie, апрель 2017 г.), подход, измененный из @ gertvdijk's комментарий ссылка, похоже, выполняет эту работу сейчас:

sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime
sudo dpkg-reconfigure -f noninteractive tzdata

7
2018-04-27 20:30





Вы должны иметь возможность использовать Debconf-зор-подборка для настройки конфигурации. Установите debconf-utils и запустите debconf-get-selections | grep tzdata на правильно настроенной системе, чтобы выяснить, что тоже установить.


4
2017-11-13 18:57



Для вещей, основанных на debconf, это должно работать. Но tzdata предпочитает конфигурацию из / etc / timezone. Таким образом, это не работает на уже установленной (хриплой) системе. - Elrond


Вы также можете использовать рецепт из (ныне несуществующего) Кукольная вики (архив), который заменяет /etc/localtime с соответствующим файлом zoneinfo из /usr/share/zoneinfo: -

class timezone {
    package { "tzdata":
        ensure => installed
    }
}

class timezone::central inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Central",
    }
}

class timezone::eastern inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Eastern"
    }
}

class timezone::pacific inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source => "file:///usr/share/zoneinfo/US/Pacific"
    }
}

class timezone::mountain inherits timezone {
    file { "/etc/localtime":
        require => Package["tzdata"],
        source =>
             "file:///usr/share/zoneinfo/US/Mountain"
    }
}

Я не уверен, что dpkg-reconfigure делает что-то дополнительное, но я использовал вышеупомянутый рецепт, и он отлично работает.


2
2018-05-26 20:23





Его очень просто и нужно только набирать команду и отвечать на простые вопросы.
затем выполните:

/usr/bin/tzselect

-3
2018-04-07 16:53



man tzselect: «Обратите внимание, что tzselect фактически не изменит часовой пояс для вас. Используйте« dpkg-reconfigure tzdata »для достижения этого». - spinkus