Категории

вторник, 6 декабря 2011 г.

Исправляем проблемы с зимним/летним временем во FreeBSD

Для начала проверяем расписание перевода часов на 2011 год:
server# zdump -v /etc/localtime | grep 2011
/etc/localtime  Sat Mar 26 18:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 KRAT isdst=0 gmtoff=25200
/etc/localtime  Sat Mar 26 19:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 KRAST isdst=1 gmtoff=28800
/etc/localtime  Sat Oct 29 18:59:59 2011 UTC = Sun Oct 30 02:59:59 2011 KRAST isdst=1 gmtoff=28800
/etc/localtime  Sat Oct 29 19:00:00 2011 UTC = Sun Oct 30 02:00:00 2011 KRAT isdst=0 gmtoff=25200
Если видим только первые две строки, команды переводить часы 30 октября отсутствуют, значит, база часовых поясов актуальна.
Но если все-таки у вас 4 строчки, то читаем дальше как обновить базу часовых поясов:
Обновляем порты и устанавливаем порт zoneinfo:
server# portsnap fetch update
server# cd /usr/ports/misc/zoneinfo && make deinstall
server# make install clean
В случае успешной установки, двигаемся дальше.
Можно выбрать часовой пояс с помощью установочного меню (sysinstall -> configure -> Time Zone):
tzsetup
А можно скопировать файл нужного пояса вручную, предварительно зарезервировав старый:
server# mv /etc/localtime /etc/localtime.old
server# cp /usr/share/zoneinfo/Asia/Krasnoyarsk /etc/localtime
Проверяем:
server# zdump -v /etc/localtime | grep 2011
/etc/localtime  Sat Mar 26 18:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 KRAT isdst=0 gmtoff=25200
/etc/localtime  Sat Mar 26 19:00:00 2011 UTC = Sun Mar 27 03:00:00 2011 KRAT isdst=0 gmtoff=28800
Если видим две строки, инструкции переводить часы 30 октября отсутствуют, база обновлена успешно.
Чтобы изменения вступили в силу для всех программ, их нужно будет перезапустить.
Обязательно обновите /etc/localtime в chroot-окружениях и крайне важно не забыть перезапустить демона cron:
server# /etc/rc.d/cron restart
Stopping cron.
Starting cron.
Ссылки:
1. OpenNet: Ручная настройка отмены перехода на зимнее время в Unix-подобных ОС
2. OpenNet: Отмена перехода на зимнее время в PostgreSQL

P.S. Из-за этого "отставания" системных часов, может перестать работать ntp сервер времени. Для исправления этой проблемы, придется проделать следующее:
1. Остановить сервер NTP:
/etc/rc.d/ntpd stop
2. Выполнить обновление базы часовых поясов 3. На всякий случай вручную синхронизировать время командой:
ntpdate 0.ru.pool.ntp.org
4. Теперь можно запустить сервер NTP:
/etc/rc.d/ntpd start

Следует иметь ввиду, что до тех пор, пока в /usr/src содержатся устаревшие данные, то при пересборке мира следует указывать MK_ZONEINFO="no" в файле /etc/make.conf, в противном случае файлы содержащиеся в /usr/share/zoneinfo, установленные из порта /usr/ports/misc/zoneinfo будут заменены содержащимися в дереве исходных кодов, т.е. устревшими.

Комментариев нет:

Отправить комментарий