Установка временной зоны Беларуси на CentOS с учётом отмены перехода на зимнее время

15 сентября 2011 года Совет министров РБ принял постановление об отмене сезонных переводов часов. В связи с этим возникла необходимость перенастройки временных зон на компьютерах, смартфонах, серверах, чтобы предотвратить автоматический переход на зимнее время ночью с 30 по 31 октября.
В этой статье мы расскажем, как исправить временную зону в CentOS.

Российским пользователям RHEL/CentOS повезло: репозитории уже обновились, и для корректного исправления временной зоны достаточно выполнить одну команду:

yum update tzdata

Белорусским же пользователям повезло меньше, и поэтому для обновления зон необходимо произвести несколько дополнительных действий.

Сначала нужно убедиться, что зона требует обновления.

zdump -v Europe/Minsk | grep 2011
Europe/Minsk  Sat Mar 26 23:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 EET isdst=0 gmtoff=7200
Europe/Minsk  Sun Mar 27 00:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 EEST isdst=1 gmtoff=10800
Europe/Minsk  Sat Oct 29 23:59:59 2011 UTC = Sun Oct 30 02:59:59 2011 EEST isdst=1 gmtoff=10800
Europe/Minsk  Sun Oct 30 00:00:00 2011 UTC = Sun Oct 30 02:00:00 2011 EET isdst=0 gmtoff=7200

Если команда вывела 4 строки, то зону необходимо обновить.

Проверим, какая зона установлена в системе.

cat /etc/sysconfig/clock

Если команда вывела

ZONE="Europe/Minsk"

значит зона установлена верно, если нет — необходимо отредактировать этот файл.
Далее нужно скачать обновлённый файл временных зон и скомпилировать его.
Скачать его можно здесь.

wget http://www.iana.org/time-zones/repository/releases/tzdata2011m.tar.gz

Распакуем архив во временную папку.

tar xzf tzdata2011m.tar.gz

Наша зона находится в файле europe, можете открыть его для просмотра, найти Minsk и почитать ради интереса, что там написано.

Скомпилируем файл europe с помощью утилиты zic.

zic europe

Утилита без параметра -d компилирует и размещает файлы зон сразу в директорию /usr/share/zoneinfo, поэтому проверим, обновилось или нет.

zdump -v Europe/Minsk | grep 2011
Europe/Minsk  Sat Mar 26 23:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 FET isdst=0 gmtoff=7200
Europe/Minsk  Sun Mar 27 00:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 FET isdst=0 gmtoff=10800

Если видим 2 строки — то всё сделано верно, и теперь наша система узнала о необычной временной зоне FET.
Остался последний штрих — обновить локальное время системы.
Создадим ссылку на файл зоны.

ln -sf /usr/share/zoneinfo/Europe/Minsk /etc/localtime

Сверим часы: проверьте текущее время компьютера командой date.

Обсуждение закрыто.