В России, Украине и Беларуси отменен переход на зимнее время. В отличие от
прошлых лет, с 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 tzdata2011n.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
|