Оригинал http://www.itpad.ru/?p=2257
Как известно 30 октября сего года, по указке сверху, мы не переходим больше на зимнее время, но это знаем мы, а сервера? Придется помочь и им узнать о новых тенденциях в мировом времяисчисление.
Итак приступим, в качестве ОС возьмем Centos (RHEL) 5. За временные настройки отвечает пакет tzdata.
1. Для начала проверим версию установленного пакета tzdata:
# rpm -qa |grep tzdata
Увидим ответ:
tzdata-2010l-1.el5
То есть установлен старый пакет, который необходимо обновить (yum install tzdata).
2. Еще раз убедимся что система осуществит автоматический переход 30 октября:
# zdump -v /etc/localtime | grep 2011
В ответ увидим такие строки:
/etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSD isdst=1 gmtoff=14400 ->/etc/localtime Sat Oct 29 22:59:59 2011 UTC = Sun Oct 30 02:59:59 2011 MSD isdst=1 gmtoff=14400 ->/etc/localtime Sat Oct 29 23:00:00 2011 UTC = Sun Oct 30 02:00:00 2011 MSK isdst=0 gmtoff=10800
Стрелочками выделены строчки означающии переход на зимнее время, Внимание! если у вас нет этих строк значит система не нуждается в обновлении и переход не будет осуществлен!
3. Убедившись что необходимо обновить пакет tzdata, скачаем новый пакет и обновим соответсвенно существующий:
Для Centos (RHEL) 5, архитектура i386:
# rpm -Uvh http://mirror.secured.md/centos/5/updates/i386/RPMS/tzdata-2011h-1.el5.i386.rpm
Для архитектуры x86_64:
# rpm -Uvh http://mirror.secured.md/centos/5/updates/x86_64/RPMS/tzdata-2011h-1.el5.x86_64.rpm
4. Проверяем результат:
# zdump -v /etc/localtime | grep 2011
/etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400
А вот теперь все ОК! Система не будет переходить на зимнее время.
А теперь поговорим как сделать все тоже самое но в 6 версии Centos.
1. Подключаем дополнительный репозиторий (CentOS-6.0 Continuous Release ( CR )), где находиться искомый пакет:
i386:
#rpm -Uvh http://mirror.centos.org/centos/6/extras/i386/RPMS/centos-release-cr-6-0.el6.centos.i686.rpm
x86_64:
#rpm -Uvh http://mirror.centos.org/centos/6/extras/x86_64/RPMS/centos-release-cr-6-0.el6.centos.x86_64.rpm
2. Установим (обновим) пакет tzdata
# yum update tzdata
3. Проверяем результат:
# zdump -v /etc/localtime | grep 2011
/etc/localtime Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0 gmtoff=10800 /etc/localtime Sat Mar 26 23:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 MSK isdst=0 gmtoff=14400
Все в порядке, система знает о новых законах.
На некоторых серверах стоит Fedora 10 и 12. yum update не помогает, какой репозиторий подключать неизвестно.
Официального пакета не нашел
Приходится ставить «левый»
wget ftp://rpmfind.net/linux/fedora/development/rawhide/x86_64/os/Packages/tzdata-2011l-3.fc17.noarch.rpm rpm -Uv tzdata-2011l-3.fc17.noarch.rpm
А так же, на некоторых есть tzdata-java
wget ftp://195.220.108.108/linux/fedora/development/rawhide/x86_64/os/Packages/tzdata-java-2011l-3.fc17.noarch.rpm rpm -Uv tzdata-java-2011l-3.fc17.noarch.rpm
# pecl install timezonedb
И добавляем строчку в php.ini
extension=timezonedb.so
И иногда делаем:
ln -s /usr/lib/php/extensions/no-debug-non-zts-20060613/timezonedb.so /usr/lib/php/extensions/timezonedb.so