Не удается обновить tzdata2019b - tzupdater версии 2.2.0-b01 - PullRequest
1 голос
/ 05 июля 2019

Я пытаюсь использовать инструмент Oracle tzupdater для обновления данных о часовых поясах. Я видел ответ о переполнении стека ( Ошибка обновления tzdata 2018f (выпущено 2018-10-18) с помощью tzupdater-2.2.0 ), в котором говорится, что проблема была исправлена ​​в версии данных часового пояса 2018 года, но теперь она пытается установить версию 2019 и до сих пор не удается.

# java -jar tzupdater.jar -v -l
Using https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz as source for tzdata bundle.
java.home: /usr/java/jre1.8.0_102
java.vendor: Oracle Corporation
java.version: 1.8.0_102
tzupdater version 2.2.0-b01
JRE tzdata version: tzdata2016d
Downloaded file to /tmp/tz.tmp_3/tzdata.tar.gz
tzupdater tool would update with tzdata version: tzdata2019b
Compiling TZDB version 2019b
Parsing file: /tmp/tz.tmp_3/africa
Parsing file: /tmp/tz.tmp_3/antarctica
Parsing file: /tmp/tz.tmp_3/asia
Failed: java.lang.Exception: Failed while parsing file '/tmp/tz.tmp_3/asia' on line 1865 'Rule  Japan   1948    1951    -   Sep Sat>=8  25:00   0   S'
java.lang.Exception: Failed while parsing file '/tmp/tz.tmp_3/asia' on line 1865 'Rule  Japan   1948    1951    -   Sep Sat>=825:00 0   S'
    at tools.tzdb.TzdbZoneRulesCompiler.parseFile(TzdbZoneRulesCompiler.java:377)
    at tools.tzdb.TzdbZoneRulesCompiler.compile(TzdbZoneRulesCompiler.java:191)
    at tools.tzdb.TzdbZoneRulesCompiler.<init>(TzdbZoneRulesCompiler.java:307)
    at com.sun.tools.tzupdater.ExternalModule.compileToJSRBinary(ExternalModule.java:153)
    at com.sun.tools.tzupdater.TimezoneUpdater.run(TimezoneUpdater.java:230)
    at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:634)
Caused by: tools.tzdb.DateTimeException: Invalid value for SecondOfDay value: 90000
    at tools.tzdb.ChronoField.checkValidValue(ChronoField.java:173)
    at tools.tzdb.LocalTime.ofSecondOfDay(LocalTime.java:210)
    at tools.tzdb.TzdbZoneRulesCompiler.parseMonthDayTime(TzdbZoneRulesCompiler.java:475)
    at tools.tzdb.TzdbZoneRulesCompiler.parseRuleLine(TzdbZoneRulesCompiler.java:399)
    at tools.tzdb.TzdbZoneRulesCompiler.parseFile(TzdbZoneRulesCompiler.java:354)
    ... 5 more

Была ли эта проблема на самом деле исправлена? Или есть другой обходной путь? Спасибо.

Ответы [ 2 ]

2 голосов
/ 08 июля 2019

В настоящее время инструмент TZUpdater совместим только с форматом данных «тыльной стороны», в котором больше нет предварительно созданных двоичных файлов. IANA никогда не публиковала их, но Пол Эггерт (сопровождающий TZ) ранее публиковал их на своем личном сайте. Он решил больше этого не делать. (Об этом есть длинная ветка в списке рассылки TZDB .)

К счастью, вы можете создать их самостоятельно, выполнив следующую процедуру:

  • Загрузить полный дистрибутивный файл tzdb-2019b.tar.lz из IANA .
  • В системе POSIX (здесь предполагается Ubuntu Linux):
    • sudo apt install lzip (если у вас его еще нет)
    • lzip -d tzdb-2019b.tar.lz
    • tar xvf tzdb-2019b.tar
    • cd tzdb-2019b
    • make rearguard_tarballs

Полученный файл tzdata2019b-rearguard.tar.gz совместим с TZUpdater:

java -jar tzupdater.jar -v -l tzdata2019b-rearguard.tar.gz

Надеемся, что со временем это будет решено с помощью обновленной версии TZUpdater, которая понимает формат выпуска, не требуя задних данных.

0 голосов
/ 13 июля 2019

Я хотел бы прокомментировать, что решение Мэтта также работает с использованием Cygwin в Windows, просто убедитесь, что установлены пакеты lzip и make, так как они не выбраны по умолчанию.

Только это я сделалне работает на Windows использует локальный файл.java -jar tzupdater.jar -v -l tzdata2019b-rearguard.tar.gz и java -jar tzupdater.jar -v -l file://tzdata2019b-rearguard.tar.gz у меня не работают, поэтому я скопировал на внутренний сервер и затем смог обновить, используя java -jar tzupdater.jar -v -l http://some-iis-server/tzdata2019b-rearguard.tar.gz

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...