Готовим Ubuntu к переводу часов 26 октября 2014 года

26 октября 2014 года в 2 часа ночи в большинстве регионов России в очередной  раз часы будут переведены на час назад. А в некоторых регионах произойдет смена часового пояса.

Поэтому нужно подготовить и убедиться, что ваша система Ubuntu готова к переводу часов.


Подробнее ознакомиться о переводе часов и изменении часовых поясов можно в Федеральном законе от 21.07.2014 № 248-ФЗ «О внесении изменений в Федеральный закон „Об исчислении времени“.
За часовые пояса в системе Ubuntu отвечает пакет tzdata.

Нашими соотечественниками был открыт баг для Ubuntu на ланчпаде:


Как можно убедиться, сходив по ссылке выше:


Для Ubuntu 14.04, 12.04, 10.04 выпустили фикс пакет tzdata, который и отвечает за часовые пояса и переводы часов на зимнее и летнее время.

Поэтому если у Вас Ubuntu 14.04 или Ubuntu 12.04 или 10.04.

Нужно обязательно обновиться:
sudo apt-get update
sudo apt-get dist-upgrade
Со штатным обновлением установится данный фикс пакета tzdata в Ubuntu.

Что делать, если у Вас другая версия дистрибутива Ubuntu?
Тогда можно обновить данный пакет в ручную, выполнив следующие команды в терминале: wget http://ftp.ru.debian.org/debian/pool/main/t/tzdata/tzdata_2014h-2_all.deb

sudo dpkg -i tzdata_2014h-2_all.deb

sudo dpkg-reconfigure tzdata

Проверка правильности базы часовых поясов tzdata в Ubuntu.

Чтобы проверить, что у Вас в системе используется правильная база часовых поясов, можно воспользоваться следующим простым sh скриптом.

В домашней папке создайте текстовый файл, назовём его, к примеру checktz.sh: sudo gedit checktz.sh
и вставьте в него текст скрипта:
#!/bin/sh
T1=$(LC_ALL=C TZ=Europe/Moscow date -d @1409067890)
if [ "$T1" != 'Tue Aug 26 19:44:50 MSK 2014' ] ; then
    echo FAIL! Wrong TZ BEFORE 26 Oct 2014!
    exit 1
fi
T2=$(LC_ALL=C TZ=Europe/Moscow date -d @1416667890)
if [ "$T2" != 'Sat Nov 22 17:51:30 MSK 2014' ] ; then
    echo FAIL! Wrong TZ AFTER 26 Oct 2014!
    exit 2
fi
echo OK
, должно получиться так:


сохраняем.

Даём права на выполнение скрипта как программы: sudo chmod +x checktz.sh
И выполняем скрипт: sh checktz.sh
Если выведет "ОК":


То значит у Вас всё в порядке.

Обновление базы часовых поясов в Java от Oracle.

Данная часть статьи касается только тех, у кого установлена java 7 или java 8 от Oracle в системе.

На сайте Oracle нужно скачать утилиту Java Time Zone Updater Tool:



В скаченном архиве будет jar файл tzupdater.jar:


Распаковываем его в домашний каталог.

Затем открываем терминал и выполняем одну команду: cd && sudo java -jar tzupdater.jar -u Всё. Теперь обновлена база часовых поясов вашей java машины.

Можно проверить это при помощи простенькой программки на java.

Открываем терминал,
создаём новый текстовый файл: sudo gedit tzcheck.java вставляем туда следующий текст программы:
import java.util.*;
import java.text.DateFormat;
public class tzcheck {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Moscow"));
        DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, Locale.US);
        df.setCalendar(cal);
        cal.setTimeInMillis(1409067890L * 1000L);
        if (!df.format(cal.getTime()).equals("Tuesday, August 26, 2014 7:44:50 PM MSK")) {
            System.out.println("FAIL! Wrong TZ BEFORE 26 Oct 2014!");
            System.exit(1);
        }
        cal.setTimeInMillis(1416667890L * 1000L);
        if (!df.format(cal.getTime()).equals("Saturday, November 22, 2014 5:51:30 PM MSK")) {
            System.out.println("FAIL! Wrong TZ AFTER 26 Oct 2014!");
            System.exit(2);
        }
        System.out.println("OK");
        System.exit(0);
    }
}
Должно получиться так:


Сохраняем.

Компилируем: javac tzcheck.java Запускаем: java tzcheck
Если вывело "Ок":


Значит всё правильно.


Внимание.
Часы на панели Ubuntu будут показывать неправильное время, хотя tzdata будет правильным.
Надо обязательно перегружаться!


Скрипты взяты из статьи на Хабрахабре

Поделиться:

Если у Вас возникли вопросы.

Приглашаю задавать их на сервисе вопросов и ответов: Ask LinuxRussia.com.
Там Ваши вопросы не потеряются и Вы быстрее получите ответ, в отличие от комментариев.

14 коммент. :

  1. Здесь сообщения появляются после их проверки? Или это ошибка у меня в браузере. Еще раз напишу.

    Спасибо за статью, получилась большая - много полезного в ней)

    Если не ошибаюсь, в Ubuntu 14.04 последние обновления - уже учитывают перевод времени: обновились пакеты tzdata и tzdata-java.

    ОтветитьУдалить
    Ответы
    1. Значит ошибка браузера... При входе в аккаунт google - написанное уже сообщение - пропадает...

      Удалить
    2. Это комментарии гугловского блоггера, поэтому иногда бывает такое. Проверки нету, сразу публикуются. Спасибо. OpenJdk обновится со штатным обновлением, а вот оракла жава нет.

      Удалить
  2. "Что делать, если у Вас другая версия дистрибутива Ubuntu?
    Тогда можно обновить данный пакет в ручную, выполнив следующие команды в терминале: ... "

    Кроме указанного возможно придется еще tzdata-java обновить.
    http://ftp.ru.debian.org/debian/pool/main/t/tzdata/tzdata-java_2014h-2_all.deb
    Пока я этого не сделал были проблемы с зависимостями.

    ОтветитьУдалить
    Ответы
    1. tzdata-java это если OpenJdk. Для Оракла Жавы ниже инструкция.

      Удалить
  3. notabenoid закрыли!!!!! notabenoid.ru и notabenoid.com закрыли!!!!

    ОтветитьУдалить
    Ответы
    1. В каком смысле закрыли? Заблокировали, или он вообще закрылся? Сейчас много сайтов заблокировано, для обхода блокировок надо ставить сеть i2p (и к ней, по-хорошему, ещё скрипт для модефикации IP-адреса), но как это сделать под ubuntu, этого я не знаю.

      Удалить
  4. Спасибо большое за полезную статью. Но что делать тем, у кого установлена java 6?

    ОтветитьУдалить
    Ответы
    1. Еще раз большое спасибо! Все заработало.

      Удалить
  5. Спасибо огромное, даже не знаю как Вас благодарить

    ОтветитьУдалить
  6. Того файла уже нет, для 12.04 нужно заменить на:

    wget http://ftp.ru.debian.org/debian/pool/main/t/tzdata/tzdata_2014h-0squeeze1_all.deb

    sudo dpkg -i tzdata_2014h-0squeeze1_all.deb

    sudo dpkg-reconfigure tzdata

    ОтветитьУдалить
  7. Советую скачать отсюда
    https://packages.debian.org/wheezy/tzdata
    https://packages.debian.org/wheezy/tzdata-java

    На текущий момент актуальные команды на загрузку:
    wget http://ftp.ru.debian.org/debian/pool/main/t/tzdata/tzdata_2015f-0+deb7u1_all.deb
    http://ftp.ru.debian.org/debian/pool/main/t/tzdata/tzdata-java_2015f-0+deb7u1_all.deb
    и установку:
    sudo dpkg -i tzdata_2015f-0+deb7u1_all.deb
    sudo dpkg-reconfigure tzdata
    sudo dpkg -i tzdata-java_2015f-0+deb7u1_all.deb
    sudo dpkg-reconfigure tzdata-java

    Да, перезагружать компьютер для изменения времени на часах не пришлось.

    ОтветитьУдалить