Многие наверняка в курсе, что в этом году в России отменен переход на летнее время. Что это нам дает? Что 30 октября этого года время не изменится.
За часовые пояса в Linux отвечает так называемая tz database — пакет tzdata. Для большинства дистрибутивов возможно будет достаточно обновить этот пакет (соответсующие исправления внесены в версию 2011i). Если же такого обновления для вашего дистрибутива не вышло, самый простой способ использовать Etс/GMT+4 или, если вы не ищете легких путей, перекомпилировать файл зоны. Об этом варианте и пойдет речь далее.
Для начала убедимся что наш файл зоны не актуален и система переведет время:
rascal@localhost:~$ zdump -v /usr/share/zoneinfo/Europe/Moscow |grep 2011
/usr/share/zoneinfo/Europe/Moscow Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK
isdst=0 gmtoff=10800
/usr/share/zoneinfo/Europe/Moscow Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSD
isdst=1 gmtoff=14400
/usr/share/zoneinfo/Europe/Moscow Sat Oct 29 22:59:59 2011 UTC = Sun Oct 30 02:59:59 2011 MSD
isdst=1 gmtoff=14400
/usr/share/zoneinfo/Europe/Moscow Sat Oct 29 23:00:00 2011 UTC = Sun Oct 30 02:00:00 2011 MSK
isdst=0 gmtoff=10800
Итак, 30 октября все пройдет по старому расписанию.
Для начала сделаем резервную копию:
rascal@localhost:~$ cp /usr/share/zoneinfo/Europe/Moscow /usr/share/zoneinfo/Europe/Moscow.bkp
Получаем последнюю версию tz database:
rascal@localhost:~$ cd /tmp
rascal@localhost:/tmp$ wget ftp://elsie.nci.nih.gov/pub/tzdata2011k.tar.gz
rascal@localhost:/tmp$ mkdir /tmp/tzdata2011k
rascal@localhost:/tmp$ tar xfv tzdata2011k.tar.gz -C /tmp/tzdata2011k
Ну а теперь собственно компиляция:
rascal@localhost:/tmp/tzdata2011k$ zic -d zoneinfo europe
rascal@localhost:/tmp/tzdata2011k$ cp /tmp/tzdata2011k/zoneinfo/Europe/Moscow \
/usr/share/zoneinfo/Europe/Moscow
Проверяем результат:
rascal@localhost:~$ zdump -v /usr/share/zoneinfo/Europe/Moscow |grep 2011
/usr/share/zoneinfo/Europe/Moscow Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK
isdst=0 gmtoff=10800
/usr/share/zoneinfo/Europe/Moscow Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK
isdst=0 gmtoff=14400
11 комментариев “Готовим Linux к 30 октября”
А если время уже поменялось, то не забыть исправить его через date.
Сработало не на всех серверах. Почему?
Может быть не на всех серверах выставлено Московское время или /etc/localtime это не ссылка на файл часового пояса, а его копия.
Спасибо. На debian/ubuntu server прокатило. Только tzdata2011i уже устарел (его нет), надо скачивать tzdata2011k.
Актуализировал, спасибо.
В packet-oriented дистрибутивах так делать, вообще говоря, очень неправильно :(
По-хорошему надо ставить свежий пакет tzdata. Я когда-то его в testing нашёл, когда у меня аналогичная проблема случилась. Не уверен, что так точно правильно =) , но в любом случае лучше установить даже самую безобидную и ничего другого не затрагивающую вещь из пакета — тогда dpkg и все менеджеры пакетов, пользующиеся базой dpkg, будут иметь реальную информацию об установленных в системе пакетах. И, например, не сделают вам даунгрэйд софта, если вы ставили nginx 0.7.x, потом поверх него скомпилировали 1.0.x, а потом в обновлениях безопасности вышел 0.7.y — и вы не глядя его поставили =)
В целом я согласен что лучше использовать менеджер пакетов, в данном конкретном случае это не всегда возможно, поэтому был написан это пост.
Насчет nginx — нельзя устанавливать одно и тоже ПО из пакета и исходников с одним и тем же PREFIX, благо с дефолтными опциями это и не возможно, ну а так, можно и «rm -rf /» выполнить, было бы желание.
Большое спасибо. Помогло. Всем рекомендую.
Огромное СПАСИБО!
GMT+4 c NTPd не катит -8ч
Потому что на самом деле надо Etс/GMT-4
Здрасьте — написал-же по русски с NTPd. C Moscow сразу. Еще раз спасибо автору!