Готовим 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 будет правильным.
Надо обязательно перегружаться!

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

  • https://www.blogger.com/profile/01315543991029397323 neon1ks

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

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

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

    • https://www.blogger.com/profile/01315543991029397323 neon1ks

      Значит ошибка браузера… При входе в аккаунт google — написанное уже сообщение — пропадает…

    • https://www.blogger.com/profile/00865845114198842309 Edward Kobylyanets

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

  • https://www.blogger.com/profile/18323772635702871127 Евгений Арасланов

    Спасибо В)

  • Анонимный

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

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

    • https://www.blogger.com/profile/00865845114198842309 Edward Kobylyanets

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

  • Анонимный

    notabenoid закрыли!!!!! notabenoid.ru и notabenoid.com закрыли!!!!

    • https://www.blogger.com/profile/12120776057319535065 Йетти Бигфут

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

  • Анонимный

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

    • https://www.blogger.com/profile/00865845114198842309 Edward Kobylyanets

      для java 6 тоже работает.

    • https://www.blogger.com/profile/06241418834059848949 Anna Shorr

      Еще раз большое спасибо! Все заработало.

  • Анонимный

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

  • Анонимный

    Того файла уже нет, для 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

  • https://www.blogger.com/profile/08543386864992275721 Иван Митричев

    Советую скачать отсюда
    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

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