Отмена перехода на зимнее время в Linux и Freebsd

В России, Украине и Беларуси отменен переход на зимнее время. В отличие от
прошлых лет, с 29 на 30 октября часы переводить не нужно. Для большинства
систем новая база часовых поясов будет установлена через штатные обновления и
не потребует от пользователя каких-либо действий. Для устаревших систем
потребуется внесение ручных изменений.

Текущий часовой пояс в Linux и FreeBSD устанавливается файлом /etc/localtime.
Этот файл представляет собой ссылку на информационный файл зоны или его копию.
В большинстве дистрибутивов  база данных с информацией о часовых поясах
расположена в каталоге /usr/share/zoneinfo. Обновления содержимого базы данных
часовых поясов можно получить с сайта ftp://elsie.nci.nih.gov/pub/

Для ручного обновления базы часовых поясов загружаем её последнюю версию:

 wget ftp://munnari.oz.au/pub/tzdata2011n.tar.gz 
Распаковываем во временную директорию:
 tar xzf tzdata2011l.tar.gz 

Проверяем текущую установленную зону

для Fedora/RHEL/CentOS:

 cat /etc/sysconfig/clock | grep ZONE ZONE="Asia/Yekaterinburg" 
для Debian/Ubuntu:

 cat /etc/timezone Asia/Yekaterinburg 

Проверим активное расписание переходов на зимнее/летнее время для текущей зоны:

 zdump -v Asia/Yekaterinburg |grep 2011 
 Asia/Yekaterinburg Sat Mar 26 20:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 YEKT isdst=0 gmtoff=18000 Asia/Yekaterinburg Sat Mar 26 21:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 YEKT isdst=0 gmtoff=21600 Asia/Yekaterinburg Sat Oct 29 20:59:59 2011 UTC = Sun Oct 30 02:59:59 2011 YEKST isdst=1 gmtoff=21600 Asia/Yekaterinburg Sat Oct 29 21:00:00 2011 UTC = Sun Oct 30 02:00:00 2011 YEKT isdst=0 gmtoff=18000 
Если последних двух строк нет, значит в систем уже установлена обновленная база
временных зон и больше ничего делать не нужно.

Иначе, убедимся в наличии необходимого обновления. Для городов в европейской
части смотрим файл europe, для азии - asia. Разделение в этих файлах весьма
условное, например, Екатеринбург относится к группе Asia, но указан в файле europe:

 vi europe 
ищем город для своего часового пояса:

 Zone Asia/Yekaterinburg 4:02:24 - LMT 1919 Jul 15 4:00 4:00 - SVET 1930 Jun 21 # Sverdlovsk Time 5:00 Russia SVE%sT 1991 Mar 31 2:00s 4:00 Russia SVE%sT 1992 Jan 19 2:00s 5:00 Russia YEK%sT 2011 Mar 27 2:00s 6:00 - YEKT # Yekaterinburg Time 
На всякий случай делаем резервную копию файла с текущими настройками:

 cp /etc/localtime /tmp/localtime.old 
Компилируем временные зоны из файла europe. Утилита zic читает текстовый файл с
описаниями зон и на выходе формирует бинарные файлы специального формата. Стоит
обратить внимание что утилита без ключа "-d" пишет файлы временных зон сразу в
/usr/share/zoneinfo, что нам и необходимо.

 zic europe 
Создаем ссылку на обновленную временную зону:

 ln -sf /usr/share/zoneinfo/Asia/Yekaterinburg /etc/localtime 
После обновления проверим переходы времени для нашей текущей зоны. В последний
раз переход произошел с 26 на 27 марта:

 zdump -v Asia/Yekaterinburg |grep 2011 
 Asia/Yekaterinburg Sat Mar 26 20:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 YEKT isdst=0 gmtoff=18000 Asia/Yekaterinburg Sat Mar 26 21:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 YEKT isdst=0 gmtoff=21600 
Убедимся, что 30 октября 2011 года показания будут без перехода на зимнее время:
 date --date='1000hours' Сбт Ноя 12 14:36:46 YEKT 2011
подогнать под регион москвы не составляет труда.
взято отсюда.
Запись опубликована в рубрике FreeBSD, Slackware. Добавьте в закладки постоянную ссылку.