Установка часового пояса с помощью автоматического скрипта

20

Я пишу сценарии для автоматизации установки новых установок slicehost. В идеальном мире, после того, как я запустил сценарий, он просто запустился, без моего внимания. Я добился успеха, за одним исключением.

Как мне установить часовой пояс, в постоянном (выживающем, перезагрузке) и нормальном (настроить на стандартное и летнее время, чтобы не просто принудительно устанавливать дату) ... способом, который не требует ввода от меня?

В настоящее время я использую

 dpkg-reconfigure tzdata

Похоже, что это никак не влияет на параметры. Это требует пользовательского ввода.


РЕДАКТИРОВАТЬ: я редактирую здесь, а не комментирую, так как комментарии, кажется, не позволяют блоки кода.

Вот фактический код, с которым я закончил, на основе комментария Рудедога ниже. Я также заметил, что это не обновляет / etc / timezone. Я не уверен, кто это использует, но в случае, если кто-то это делает, я тоже это устанавливаю.

TIMEZONE="America/Los_Angeles"      
echo $TIMEZONE > /etc/timezone                     
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime   # This sets the time
Том
источник

Ответы:

18

Вы должны быть в состоянии сделать это с

cp /usr/share/zoneinfo/America/Los_Angeles /etc/localtime

Замените соответствующий часовой пояс в приведенной выше команде.

Rudedog
источник
1
Вы должны быть символическими ссылками, что не копирование
Zypher
1
Он использует Debian. dpkg-reconfigure tzdataделает копию, а не символическую ссылку. Я считаю, что причина в том, что / usr / share не может быть смонтирован во время загрузки.
Rudedog
Согласно техническому разделу man-страницы tzconfig для Debian:> Работа, выполняемая tzconfig, на самом деле довольно проста. Он просто обновляет ссылку / etc / localtime, чтобы указывать на правильный часовой пояс, установленный в / usr / share / zoneinfo /.
Brent
1
tzconfig устарела для lenny в пользу dpkg -configure tzdata и фактически ничего не будет делать. Вы можете проверить, что он копирует вместо символических ссылок, запустив dpkg-reconfigure tzdata, и посмотрите на результат.
Rudedog
3

На Ubuntu 12.04 мне помогло следующее:

# http://manpages.ubuntu.com/manpages/precise/man7/debconf.7.html
export DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive
echo "Europe/Berlin" > /etc/timezone
dpkg-reconfigure tzdata
Шломо
источник
1
Этот метод больше не работает bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Питер Гибсон,
Работает на Ubuntu 14.04.
суббота
3

Попробуй это:

echo "Europe/London" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Амаду Бах
источник
Хотя код ценится, у него всегда должно быть сопутствующее объяснение. Это не должно быть долго, но ожидается.
Петер - Восстановить Монику
3
Этот метод больше не работает bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
Питер Гибсон,
2

Обновите /etc/localtimeсимволическую ссылку, чтобы указать правильный часовой пояс в/usr/share/zoneinfo/

казарка
источник
Обратите внимание, что если вы используете символическую ссылку, а ваша /usrсмонтирована в отдельном разделе, все, что запускается до /usrмонтирования, не будет иметь правильный часовой пояс. Сегодня большинство дистрибутивов, включая Debian, копируют, а не символьные ссылки.
Rudedog
1

Наткнулся на это сам. Вот полный конфиг для того, как сделать это правильно (это совокупность комментариев здесь и этот вопрос ):

#Set time zone and time
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select London" | debconf-set-selections
TIMEZONE="Europe/London"
echo $TIMEZONE > /etc/timezone
cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime
/usr/sbin/ntpdate pool.ntp.org
Синхронная
источник
0

tzdataиспользует debconf для ответа на этот вопрос, поэтому вам нужно предварительно заполнить его. Есть несколько способов сделать это, самый простой - это проследить за ответом во время установки . Кроме того, вы можете настроить базу данных по умолчанию для использования debconf, смотрите debconf(7)страницу руководства, чтобы узнать, как это сделать.

TRS-80
источник
-2

Также убедитесь, что ntpd установлен и работает.

yum install ntpd
ntpdate pool.ntp.org
service ntpd start
Ираклис
источник