Обновление timezone на freeBSD, PHP, postgresql, java

31 августа 2011 года вышло постановление №725 О составе территорий, образующих каждую часовую зону, и порядке исчисления времени в часовых зонах, а также о признании утратившими силу отдельных постановлений Правительства Российской Федерации.
В связи с этим потребуется обновление зон на всех существующих версиях freeBSD.
C текущей 8.2-RELEASE проблем нет, там нужно всего то обновить исходные коды и выполнить:

cd /usr/src/share/zoneinfo && make clean && make install clean

После чего нужно выполнить tzsetup или руками скопировать файл зоны:

cp /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime

Но что делать тем, кто до сих пор поддерживает freeBSD устаревших версий?

Для этого есть отличное и простое решение — порт misc/zoneinfo (он берет данные непосредственно с tz database):
make -C /usr/ports/misc/zoneinfo install clean && tzsetup
Перед этим, конечно же, нужно обновить дерево портов.
Если reboot нежелателен, то после этого надо рестартовать, все сервисы, зависимые от времени, как то: syslogd, newsyslogd, cron и если есть что-то не базовое типа mysqld, squid, exim, dovecot etc.
Так же, если есть php, то следует поставить порт misc/pecl-timezonedb и рестартовать apache.
Так же, если есть postgresql, который (чтоб его) использует не системные зоны, а таки отдельные, надо выполнить:
cp /usr/share/zoneinfo/Asia/Novosibirsk /usr/local/share/postgresql/timezone/Asia/Novosibirsk
/usr/local/etc/rc.d/postgresql restart

Так же, если есть java, то следует обновить Timezone Updater — по ссылке инстукция и сам файл.

Опубликовано 04.09.2011 в 13:58 · Автор MIkhail Timofeev · Ссылка
Рубрики: freeBSD