Данная статья написана по мотивам статей http://dimdim.org.ua/time2011/ , http://www.opennet.ru/tips/2630_linux_timezone_time.shtml и содержит информацию о том, как это делать на FreeBSD (в статьях указаны методы для разных Linux систем, а вот FreeBSD аккуратно обошли).
1) Делаем бекапы.
На всякий случай сделаем бэкапы наших зон (как оказалось не зря, так как отменили этот закон ). Информация о зонах лежит здесь /usr/share/zoneinfo. Поэтому делаем бэкап этой папки.
2) Смотрим, обновлена ли у нас информация о зонах:
skeletor@gate:~$ zdump -v Europe/Kiev | grep 2011
Europe/Kiev Sun Mar 27 00:59:59 2011 UTC = Sun Mar 27 02:59:59 2011 EET isdst=0 gmtoff=7200
Europe/Kiev Sun Mar 27 01:00:00 2011 UTC = Sun Mar 27 04:00:00 2011 EEST isdst=1 gmtoff=10800
Europe/Kiev Sun Oct 30 00:59:59 2011 UTC = Sun Oct 30 03:59:59 2011 EEST isdst=1 gmtoff=10800
Europe/Kiev Sun Oct 30 01:00:00 2011 UTC = Sun Oct 30 03:00:00 2011 EET isdst=0 gmtoff=7200
Ну и на всякий случай, посмотрим, будет ли переведено время:
skeletor@gate:~$ date
вторник, 11 октября 2011 г. 12:43:08 (EEST)
skeletor@gate:~$ date -v +768H
суббота, 12 ноября 2011 г. 11:43:10 (EET)
Как видим – будет.
3) Получение новой базы часовых поясов.
Нам нужен файл tzdata2011k.tar.gz, который можно скачать отсюда (выложено несколько ссылок, так как часть из них может не работать)
http://dimdim.org.ua/wp-content/uploads/2011/10/tzdata2011k.tar.gz
ftp://elsie.nci.nih.gov/pub/tzdata2011k.tar.gz
http://narod.ru/disk/27615156001/tzdata2011k.tar.gz.html
http://people.freebsd.org/~edwin/tzdata2011k.tar.gz
4) Установка.
Скачанный архив распаковываем в любую папку, находим файл со своим регионом (я использовал europe для города Kiev) и смотрим информацию:
Zone Europe/Kiev 2:02:04 - LMT 1880
2:02:04 - KMT 1924 May 2 # Kiev Mean Time
2:00 - EET 1930 Jun 21
3:00 - MSK 1941 Sep 20
1:00 C-Eur CE%sT 1943 Nov 6
3:00 Russia MSK/MSD 1990
3:00 - MSK 1990 Jul 1 2:00
2:00 - EET 1992
2:00 E-Eur EE%sT 1995
2:00 EU EE%sT 2011 Mar lastSun 1:00u
3:00 - FET # Further-eastern European Time
Нас интересует присутствие строки FET. Если она есть, значит база обновлённая. Переходим к установке:
– компиллируем файлы зон (без ключа “-d” пишет файлы временных зон сразу в /usr/share/zoneinfo)
#zic europe
Проверяем дату файла
#ls -l /usr/share/zoneinfo/Europe/Kiev
-rw-r--r-- 1 root wheel 1316 11 окт 12:34 /usr/share/zoneinfo/Europe/Kiev
Значит мы имеем изменённый файл зоны. Теперь либо копируем этот файл в файл /etc/localtime либо делаем симлинк.
5) Проверка
#zdump -v Europe/Kiev | grep 2011
Europe/Kiev Sun Mar 27 00:59:59 2011 UTC = Sun Mar 27 02:59:59 2011 EET isdst=0 gmtoff=7200
Europe/Kiev Sun Mar 27 01:00:00 2011 UTC = Sun Mar 27 04:00:00 2011 FET isdst=0 gmtoff=10800
ну и проверим перевод часов:
skeletor@bar:~$ date
вторник, 11 октября 2011 г. 13:06:33 (FET)
skeletor@bar:~$ date -v +768H
суббота, 12 ноября 2011 г. 13:06:34 (FET)
Примечание.
После недолгих колебаний, группа энтузиастов возродила проект. Подробнее можно прочесть здесь