Оновлення бази часових поясів у Linux

&nbsp &nbsp Останні оновлення бази даних часових поясів публікуються на сайті міжнародної організації IANA (The Internet Assigned Numbers Authority) у розділіTime Zone Database- Latest Version – Time Zone Data v. yyyy - файл ім'ямtzdatayyyyx.tar.gz, де yyyy-рік, x - версія файлу. Ці оновлення відображають актуальні межі часових поясів та правила переходу на зимовий/літній час. В архівіtzdatayyyyзнаходяться вихідні текстові файли, що містять налаштування системного часу для різних зон, наприклад Європи (файл europe), Азії (asia), північної Америки (northamerica) і т.п. Завантажити актуальну версію можна також за допомогою FTP-доступу, наприклад командою wget:

Зберігання цих даних не потрібно, тому всі наступні операції можна виконати в якому-небудь тимчасовому каталозі, який надалі видалити.

Створюємо тимчасовий каталог, наприклад /tmp/tznew :

Переходимо до нього:

Завантажуємо базу даних часових поясів:

Виймаємо вміст архіву:

tar zxvf tzdata-latest.tar.gz

Після розпакування, у каталозі будуть знаходитися текстові файли з документацією та файли налаштувань тимчасових зон по регіонах (africa, asia, europe, тощо)

Налаштування системного часу в операційних системах Linux визначаються вмістом файлу/etc/localtime. Цей файл не є текстовим і створюється шляхом компіляції з вихідного файлу відповідної часової зони спеціальної утилітоюzic, що виконується з правами суперкористувача root . Утиліта zic читає текстовий файл із описами зон та на виході формує бінарні файли спеціального формату в каталозі /usr/share/zoneinfo/. Для заміни, наприклад, налаштувань для Європи,виконується командаzic europe- деeurope- ім'я файлу з розпакованого архіву. Для азіатського регіону - zic asia і т.п.

В результаті виконання цієї команди відбудеться оновлення файлів із даними тимчасових налаштувань у каталозі /usr/share/zoneinfo/Europe/. Наприклад, для Москви налаштування містяться у файлі/usr/share/zoneinfo/Europe/Moscowі для їх застосування достатньо створити символьне посилання для /etc/localtime:

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

А, наприклад, для Новосибірська

ln -sf /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime

Для перевірки системного часу можна використовувати командуdate