Обновление часовых поясов на Mac OS X

Так случилось, что компания Apple не обновляет часовые пояса (Timezone) на старых Mac OS X. А по факту, достаточно большое количество людей все еще пользуются устаревшими версиями операционной системы. Такое случилось и со мной. Один из больших начальников нашей группы компании пользуется MacBook Air с Mac OS X Lion 10.7.5. Обновлять ее он конечно же не хочет – нет у него столько времени. А ездит (в том числе и по заграницам) он много и делать в итоге что-то надо. В итоге, решение было найдено! Добро пожаловать под кат для подробностей.

Погуглив часок, я нашел решение и немного его адаптировал под Mac OS X 10.7.5. Для обновления Timezone нам потребуются 3 инструмента:

  1. Command Line Tools
  2. ICU
  3. И актуальные Timezone

Погнали :-)

1. Скачиваем Command Line Tools (OS X Lion) for Xcode – April 2013 по ссылке https://developer.apple.com/downloads/index.action. Для скачивания, вам понадобится Apple ID.

timezone1

2. Запускаем скаченный xcode462_cltools_10_76938260a.dmg файл и устанавливаем его. Установщик выдаст сообщение о «Просроченном сертификате» — игнорируем его и нажимаем Продолжить.

timezone2

3. После завершения установки, проверяем, все ли корректно установилось. Запускаем Терминал и вводим команду gcc –v. Результат должен быть как на скриншоте.

timezone34. Не закрываем Терминал, продолжаем установку. Скачиваем ICU:

git clone -b tzupdates-10.7 https://github.com/grig/osx-icu

5. Скачиваем актуальные timezone:

curl -O http://www.iana.org/time-zones/repository/releases/tzdata2014j.tar.gz

6. Переходим в папку icuSources

cd osx-icu/icuSources

7. Копируем tzdata2014j.tar.gz в папку tools/tzcode

cp ../../tzdata2014j.tar.gz tools/tzcode

8. Запускаем configure

./runConfigureICU MacOSX —with-data-packaging=archive

9. Собираем проект

gnumake

10. Почти все готово, осталось заменить старый файл timezone на новый. Делаем бекап старого файла

sudo cp /usr/share/icu/icudt46l.dat{,.bak}

11. Устанавливаем новые файл timezone

sudo install -o root -g wheel -m 0644 -Sp data/out/icudt46l.dat /usr/share/icu/icudt46l.dat

Перезагружаем Mac OS X и радуемся корректным Timezone’ам :-). Автоопределение положения теперь тоже будет работать корректно. Оставайтесь с нами :-)

Присоединяйтесь к нам ВКонтакте или через RSS, чтобы быть в курсе последних новостей из мира Apple Mac OS X.

Обновление часовых поясов на Mac OS X: 37 комментариев

  1. При выполнении ./runConfigureICU MacOSX —with-data-packaging=archive
    Пишет:
    MacBook-Pro-MacBook:icuSources macbook$ ./runConfigureICU MacOSX —with-data-packaging=archive
    export CPP= CC= CXX= CPPFLAGS= CFLAGS= -O2 CXXFLAGS= -O2 LDFLAGS= MAKE=
    Running ./configure —with-data-packaging=archive for MacOS X (Darwin) using the GNU C++ compiler

    configure: error: invalid variable name: `—with-data-packaging’
    ./runConfigureICU: ./configure failed

  2. Спасибо большое! Я уже из-за этих дат перестал пользоваться календарем на старом MacBook. Теперь он наконец будет показывать правильное время у событий.

  3. Спасибо за подробную информацию все получилось огромное спасибо автору!!!!!

  4. Доброго дня!
    При вводе команды «sudo cp /usr/share/icu/icudt46l.dat{,.bak}» выдает надпись:
    «WARNING: Improper use of the sudo command could lead to data loss
    or the deletion of important system files. Please double-check your
    typing when using sudo. Type «man sudo» for more information.

    To proceed, enter your password, or type Ctrl-C to abort.

    Password:»
    Но пароль ввести не дает

    1. На самом деле пароль ввести дает, просто в *nix-системах ввод пароля (сами символы или звездочки) не отображаются

  5. Вопрос.
    Сделал по инструкции, но проблема осталась: письма на почту приходят в будущем времени, т.е. на час вперёд. Раньше было хуже: отправлялись с отставанием на час (у получателя время было на час назад у письма), а приходили с отметкой на час вперёд. Сейчас же осталось так: письма приходят с отметкой времени на час вперёд, т.е. отличаются от системного о в 1 час вперёд, а отправляются с корректным временем.
    Подскажите, как исправить?

    1. Для начала скажите — вы случайно пояса не меняли в ручную, до того, как сделали все действия по статье. Еще конечно как вариант, у отправителя вашего возможно пояс не тот выбран. Но я все же склоняюсь к первому варианту.

      1. Ранее была такая же проблема с 10.6.8 помогло вот это: http://m.geektimes.ru/post/131621/.
        Обновился до 10.7.5 и опять проблема появилась.
        Теперь сделал по вышеуказанной инструкции в статье.
        Часовой пояс «Москва-Россия», синхронизацию отключил (хотя экспериментировал с синхронизацией: не помогает).
        А как посмотреть какой щас часовой пояс +3 или +4 (а то только указывается «Москва-Россия»)?
        Дополнительно: почтовая программа на Mac OS X 10.7.5 — Mozilla Thunderbird.
        Отправители разные: как ПК на Windows, так и телефоны на Android и все находятся в одном часовом поясе — Москва.
        Пояса менял в ручную, т.е. если был в ручную установлен часовой пояс, и после проделанных действий что-то не так настроилось?
        Если команда в терминале, чтобы посмотреть всё ли верно применилось по инструкции выше?

        1. Попробуйте выполнить в терминале на маке команду date и выложите результат выполнения

          1. Проблема со стороны почтовой программы Mozilla Thunderbird — она показывает во входящих и исходящих сообщениях время прибавляя один час.
            В стандартном почтовом клиенте время корректно отображается.
            Буду на форуме Mozilla Thunderbird разбираться)
            Спасибо)

            P.S.
            Lions-Mac:~ User$ date
            пятница, 22 января 2016 г. 12:50:21 (MSK)

  6. Не сообразил вас спросить про почтовый клиент, думал пользуйтесь стандартным Mail

  7. А на следующей системе, конкретно на OS X Mountain Lion 10.8.5, Apple поддерживает часовые пояса для России в актуальном состоянии или придётся также в ручную править?

    1. Так, 10.8.5 вышла 13.09.2013 — однозначно на ней часовые пояса не обновляются автоматически и делать можно по этой же статье. Часовые пояса актуальны только в 10.9.5, 10.1х.

  8. Вопрос.
    На сайте http://www.iana.org/time-zones обновляются постоянно как часовые пояса (
    Time Zone Data), так и Время зоны (Time Zone Code). Здесь в инструкции скачивались только часовые пояса.
    Может быть ещё необходимо устанавливать времена зон, чтобы всё корректно было?
    Если да, то как их тоже установить?

    1. Насколько я понимаю, это просто коды таймзон, т.е. Europe/Moscow, если я не ошибаюсь конечно. А в у вас что-то не получилось на 10.8.5 обновить?

      1. Некоторые почтовые программы некорректно отображают время входящих и исходящих писем, например Mozilla Thunderbird, Opera Mail, в исходниках писем в исходящих часовой пояс +0400.
        Но если выбрать часовой пояс Багдад и отключить синхронизацию, то всё нормально. Поэтому я предполагаю, что некоторые почтовые программы обращаются к определённым данным в системе, которые по инструкции в статье не обновляются.
        10.8.5 не устанавливал, пока что на 10.7.5 хочу решить проблему.

        Вопрос.
        С помощью Time Zone Data мы собрали файл icudt46l.dat и меняем его в системе на собранный.
        А как обновлять Time Zone Code? Может быть из-за этого некоторые почтовые программы путаются со временем на час вперёд, когда указан часовой пояс Москва.

        1. Time Zone Code в данном случае были внутри ICU (пункт 4). Вы можете попробовать собрать все заново, предварительно заменив содержимое папки osx-icu/icuSources/tools/tzcode/ содержимым архива с сайта http://www.iana.org/time-zones. Но как мне кажется, проблема тут именно в работе конкретной почтовой программы. Как вариант, попробовать сами почтовые программы обновить.

          1. Проблему так и не решил.
            Что-то не так с Московским часовым поясом (а может быть и для всей России).
            Выход нашёл для себя не очень, но по крайней мере время в почте отображается верно: выставил часовой пояс «Багдад — Ирак».
            =
            При замене файлов в папке osx-icu/icuSources/tools/tzcode/ на новые с http://www.iana.org/time-zones возникает ошибка на стадии сбора проекта gnumake.
            Программы OperaMail и Thunderbird актуальной версии. Видимо что-то не совсем так с Московским часовым поясом и программы ссылаются в системе на это.

  9. А если для теста попробовать встроенную программу Mail? При этом пояс выставить Московский

    1. Встроенная программа Mail корректно время отображает.
      Меня интересует, почему некоторый сторонний софт (OperaMail, Thunderbird) в mac os 10.7.5 не корректно отображает время при Московском часовом поясе, а при часовом поясе Багдад-Ирак всё нормально.
      Если у вас есть возможность — проверьте (mac os 10.7.5, почтовая программа Thunderbird, Московский часовой пояс, проверить сообщения в папке входящие и отправленные).

    1. «http://www.iana.org/time-zones/tzdata2016f.tar.gz скачал, распаковал и обновил зоны.» — покажите вывод командной строки, после распаковки и обновления. Скорее всего у вас ничего не обновилось. Попробуйте сперва обновить tzdata2014 как в указано в посте.

  10. Не помогло :-\ Система 10.8.5
    Шел четко по инструкции, только в пункте с бэкапом файла timezone не сошлось, так как вместо icudt46l.dat в папке лежал файл icudt49l.dat (забэкапил соответственно его)
    Далее, после установки нового файла, кроме icudt46l.dat вновь появился icudt49l.dat (с датой создания 1 янв 2012 года).
    Подскажешь, в чем может быть проблема?

  11. Так, поправка к сообщении выше — понял, что 49l не «вновь появился», а просто остался там и установка его не снесла. Решил удалить его (49l.dat) вручную, надеясь, что после перезагрузки система подхватит 46l.date, но не тут-то было. Теперь у меня ноут не загружается.. После появления лого, бело-серый экран и периодически вращающийся кружок.. Подскажите, пожалуйста, как это поправить?

    1. «4. Не закрываем Терминал, продолжаем установку. Скачиваем ICU:

      git clone -b tzupdates-10.7 https://github.com/grig/osx-icu»

      Вам надо было для 10.8.5 скачать ICU посвежее, получившийся файл для вашей системы не корректный. Сейчас либо восстанавливаться из копии Time Machine, либо попробовать каким-то образом удалить файл icudt46l.dat и загрузиться. Можно еще попробовать переименовать его в icudt49l.dat и посмотреть, что будет.

      1. После долгих разборок таки смог в recovery mode вернуть файлик, и реанимировал ноут.

        Теперь новый затык. По вашей рекомендации скачал нужный icu, также последний timezone 2016 года,
        Далее все по пунктам выполняю, но в итоге в папке out нет файла dat. Только папки build и tmp.

        В последних строках после gnumake вылезает ошибка. подскажите, пожалуйста, возможно из-за нее ничего не получается?
        Скрин: http://screenshot.ru/upload/image/zaYF

        1. Не подскажите, у вас получилось решить проблему перевода Mac OS X 10.8.5 на зимнее время после 26 октября 2014?
          Пытаюсь собрать icudt49l.dat с tzdata2014i.tar.gz и новее, но ничего не выходит =(
          Ошибка та же, для сборки icudt49l.dat необходимы три зоны solar 87, 88, 89, но в файлах tzdata2014i.tar.gz и новее этих зон уже нет.

  12. Woker, чем дело кончилось? У меня в аналогичной ситуации файл icudt46l.dat лежит в /out/tmp/, а в целевой папке, соответственно icudt49l.dat.
    Переименование работает? Кирпич из рабочей машины делать нет желания… OSX 10.8.5

Добавить комментарий для Woker Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code