Многие наверняка в курсе, что в этом году в России отменен переход на . Что это нам дает? Что 30 октября этого года время не изменится.

За часовые пояса в отвечает так называемая tz database — пакет . Для большинства дистрибутивов возможно будет достаточно обновить этот пакет (соответсующие исправления внесены в версию 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 октября”
  1. looser_TM:

    Огромное СПАСИБО!

    GMT+4 c NTPd не катит -8ч

  2. Gin:

    Большое спасибо. Помогло. Всем рекомендую.

  3. xawari:

    Спасибо. На debian/ubuntu server прокатило. Только tzdata2011i уже устарел (его нет), надо скачивать tzdata2011k.

    • Rascal:

      Актуализировал, спасибо.

    • Avari:

      В packet-oriented дистрибутивах так делать, вообще говоря, очень неправильно :(

      По-хорошему надо ставить свежий пакет tzdata. Я когда-то его в testing нашёл, когда у меня аналогичная проблема случилась. Не уверен, что так точно правильно =) , но в любом случае лучше установить даже самую безобидную и ничего другого не затрагивающую вещь из пакета — тогда dpkg и все менеджеры пакетов, пользующиеся базой dpkg, будут иметь реальную информацию об установленных в системе пакетах. И, например, не сделают вам даунгрэйд софта, если вы ставили nginx 0.7.x, потом поверх него скомпилировали 1.0.x, а потом в обновлениях безопасности вышел 0.7.y — и вы не глядя его поставили =)

      • Rascal:

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

        Насчет nginx — нельзя устанавливать одно и тоже ПО из пакета и исходников с одним и тем же PREFIX, благо с дефолтными опциями это и не возможно, ну а так, можно и «rm -rf /» выполнить, было бы желание.

  4. I:

    Сработало не на всех серверах. Почему?

    • Rascal:

      Может быть не на всех серверах выставлено Московское время или /etc/localtime это не ссылка на файл часового пояса, а его копия.

  5. Times:

    А если время уже поменялось, то не забыть исправить его через date.

  6.  
Оставить комментарий

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">