Cогласно Федеральный закону от 21.07.2014 N 248-ФЗ "О внесении изменений в Федеральный закон "Об исчислении времени" с 26 октября 2014 года в России отменяется постоянное "летнее" время, т.е осуществляется переход на "зимнее" время без последующего перехода на "летнее" весной. Соответственно, снова стала актуальной задача по реконфигурации временных зон систем работающих на ОС Solaris.
Компания Oracle, в свою очередь, еще не успела выпустить "полноценный" патч для Solaris 10, собрав лишь IDR-Patch (IDR151591-01 для SPARC и IDR151590-01 для x86) зоны 2014f, который устанавливается поверх патчей 148559-10 и 148560-10 (зона 2014e), соответственно. Для 11-й версии Solaris решение обещают в ближайших SRU, на данный момент для 11.2 решение предоставляется только в виде IDR-пакета idr1417.1(x86) и idr1418.1(sparc), требующих предварительную установку SRU15. Для 11.1 доступен idr1443.1 (x86) и idr1444.1(sparc), предварительной установки SRU не требуется, однако данный пакет применим только до SRU7.5 (включительно), для старших SRU (до 15.4) предусмотрен idr1435.1(x86) и idr1436.1(sparc). Для 11.0 (11/11) официальных обновлений еще нет. Естественно, патчи доступны обладателям купленной поддержки ОС у Oracle. Для версий 8 и 9 - патч традиционно выпускается по линии спец. поддержки Vintage Support и доступны "особо избранным", а принимая во внимание информацию, что расширенная поддержка на эти версии Solaris возможна только до конца октября 2014, вероятность получения патча сводится к нулю...
Решение данной задачи, естественно, возможно и без участия "фирменных" патчей, путем изменения правил и зон вручную, как это было описано,например, мной в статье "Отмена перехода на зимнее время в ОС Solaris. Варианты" в рамках исполнения федерального закона об исчислении времени от 2011 года.
Так же как и в 2011 году, кроме патчей, есть возможность изменения правил или зон с последующей их компиляцией либо установкой принудительной зоны GMT+X (для МСК, например, X=3). Однако последний вариант может привести к некорректному отображению времен ранее созданных файлов.Изменение правила Russia, опять таки, нецелесообразно в связи с аналогичной ситуацией с Минском (как и в 2011 году) использующих правило Russia, но "отказывающегося" переходить вместе с Россией на зимнее время в этом году.Соответственно, рассмотрим самый корректный способ - а именно рассмотрим необходимые изменения на примере зоны Europe/Moscow, актуальные для 2014 года ( см. файл /usr/share/lib/zoneinfo/src/europe):
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Europe/Moscow 2:30:17 - LMT 1880
2:30:17 - MMT 1916 Jul 3 # Moscow Mean Time
2:31:19 Russia %s 1919 Jul 1 2:00
3:00 Russia %s 1921 Oct
3:00 Russia MSK/MSD 1922 Oct
2:00 - EET 1930 Jun 21
3:00 Russia MSK/MSD 1991 Mar 31 2:00s
2:00 Russia EE%sT 1992 Jan 19 2:00s
3:00 Russia MSK/MSD 2011 Mar 27 2:00s
4:00 - MSK 2014 Oct 26 2:00s
3:00 - MSK
Запись предыдущей версии зон (образца 2011 года) выглядит следующим образом:
Zone Europe/Moscow 2:30:20 - LMT 1880
2:30 - MMT 1916 Jul 3 # Moscow Mean Time
2:30:48 Russia %s 1919 Jul 1 2:00
3:00 Russia MSK/MSD 1922 Oct
2:00 - EET 1930 Jun 21
3:00 Russia MSK/MSD 1991 Mar 31 2:00s
2:00 Russia EE%sT 1992 Jan 19 2:00s
3:00 Russia MSK/MSD 2011 Mar 27 2:00s
4:00 - MSK
То есть, для того, чтобы разрешить переход на зимнее время необходимо разрешить смещение на +4 часа относительно UTC только до 26 октября 2014 года, выставить постоянное смещение относительно UTC +3 и отключить правило Russia для этой зоны. Аналогичные изменения делаются и для любой другой зоны. После внесения изменений необходимо провести компиляцию при помощи
#zic /usr/share/lib/zoneinfo/src/europe
Проверить правильность конфигурации зоны, как я уже упоминал в исходной статье, можно при помощи zdump :
Пример "правильного" вывода :
# zdump -v $TZ |grep 2014
Europe/Moscow Sat Nov 1 22:58:15 2014 UTC = Sun Nov 2 01:58:15 2014 MSK isdst=0
Europe/Moscow Sat Oct 25 21:59:59 2014 UTC = Sun Oct 26 01:59:59 2014 MSK isdst=0
Europe/Moscow Sat Oct 25 22:00:00 2014 UTC = Sun Oct 26 01:00:00 2014 MSK isdst=0
Пример вывода "не пропатченной" системы :
# zdump -v $TZ |grep 2014
Europe/Moscow Thu Oct 16 12:28:37 2014 UTC = Thu Oct 16 16:28:37 2014 MSK isdst=0
Cкачать исходные файлы зон можно здесь :
Solaris 10
Solaris 11.2
Solaris 11.1