Temurin-build: Как обновить данные часового пояса с помощью AdoptOpenJDK

Созданный на 25 апр. 2019  ·  50Комментарии  ·  Источник: adoptium/temurin-build

Я пытался обновить данные часового пояса в последнем образе AdoptOpenJDK 11, однако tzupdater Oracle, похоже, не работает, вылетая из-за исключения нулевого указателя. Есть ли рекомендуемый способ обновления часовых поясов с помощью AdoptOpenJDK?

blocked bug

Самый полезный комментарий

java -Djava.vendor="Oracle Corporation" -verbose:class -jar "${PWD}/tzupdater.jar" -v -l "file://${PWD}/${RGTZ}"

Все 50 Комментарий

Это происходит с двоичным файлом Adopt за пределами Docker? Какое сообщение об ошибке вы видите?

Да, я могу воссоздать эту проблему на своем компьютере вне докера, вывод команды (с включенным флагом подробности) выглядит следующим образом:

$ java -jar resources/tzupdater.jar --location --force -v
Using https://www.iana.org/time-zones/repository/tzdata-latest.tar.gz as source for tzdata bundle.
java.home: /Library/Java/JavaVirtualMachines/adoptopenjdk-12.jdk/Contents/Home
java.vendor: AdoptOpenJDK
java.version: 12
tzupdater version 2.2.0-b01
JRE tzdata version: tzdata2018g
Downloaded file to /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T/tz.tmp/tzdata.tar.gz
java.lang.NullPointerException
Exception in thread "main" com.sun.tools.tzupdater.TzRuntimeException: java.lang.NullPointerException
    at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:653)
Caused by: java.lang.NullPointerException
    at com.sun.tools.tzupdater.TimezoneUpdater.run(TimezoneUpdater.java:215)
    at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:634)

Не уверен, почему он забирает мою версию Java как 12, как:

$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.2+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.2+9, mixed mode)
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

@keirlawson А, похоже, вы работаете на Mac. У Apple есть специальный внутренний инструмент, который устанавливает JAVA_HOME по умолчанию и т. Д.

Я использую сценарий оболочки для переключения между ними:

# List all of the Java's that are available
alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'

# Swap between Java's
function use_java() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    export PATH=$JAVA_HOME/bin:$PATH
    java -version
}

Но да, NPE раздражает - нам придется покопаться в этом - это не проблема с докером, поэтому я перенесу это.

Немного покопавшись в этом, я обнаружил пару вещей, на которые следует обратить внимание;

Следующая информация Oracle TZ Updater размещена на странице загрузки;

Системные Требования

Инструмент TZUpdater поддерживает все поддерживаемые в настоящее время версии Oracle JDK и JRE на всех поддерживаемых платформах. Значение свойства java.vendor должно быть Sun Microsystems Inc., Oracle Corporation или BEA Systems, Inc.

Это заставляет меня думать, что это все равно не сработает.

Также есть еще один инструмент от Azul Systems (доступен по адресу https://www.azul.com/products/open-source-tools/ziupdater-time-zone-tool/), который выпущен под GPLv2, но не работает под jdk11 с текст [ziupdater]unsupported Java version 11.0.3 .

Если я не упускаю какую-либо информацию, думаю, нам нужно обсудить здесь наши варианты.

Интересно - имеем ли мы доступ к источнику Azuls? Надеюсь, мы сможем форк / патч
что работать с Adopt

В субботу, 27 апреля 2019 г., в 12:13 Али Инс [email protected] написал:

Немного покопавшись в этом, я обнаружил пару вещей, на которые следует обратить внимание;

Следующая информация Oracle TZ Updater размещена на странице загрузки;

Системные Требования

Инструмент TZUpdater поддерживает все поддерживаемые в настоящее время версии Oracle.
JDK и JRE на всех поддерживаемых платформах. Значение свойства java.vendor
должно быть Sun Microsystems Inc., Oracle Corporation или BEA Systems, Inc.

Это заставляет меня думать, что это все равно не сработает.

Также есть еще один инструмент от Azul Systems, выпущенный под GPLv2.
но не запускается под jdk11 с текстом неподдерживаемой версии.

Если я не упускаю какую-либо информацию, думаю, нам нужно обсудить наши варианты
здесь.

-
Вы получаете это, потому что подписаны на эту ветку.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/AdoptOpenJDK/openjdk-build/issues/1057#issuecomment-487277125 ,
или отключить поток
https://github.com/notifications/unsubscribe-auth/AABME2D2GVKBSNWHNGDOXOLPSQYNFANCNFSM4HIV2ISA
.

>

Ура, Мартейн (отправлено из Gmail Mobile)

Да, я нашел Azul, но нигде не смог найти исходный код, несмотря на то, что он предположительно был открытым. Может быть, если у кого-то есть контакт в Азуле, он сможет от них избавиться?

Я все еще не уверен, выпущен ли ZIUpdater Azul с исходным кодом или нет, потому что у него есть эта информация внизу страницы, на которую я ссылался ранее.

Пожалуйста, присылайте нам вопросы / проблемы / запросы на создание снимков исходного кода на

Но теоретически можно запросить исходники. Есть ли у нас контакты в Azul @karianna?

Да я их сейчас пингую.

Похоже, у OpenJDK уже есть утилита для решения части проблемы, хотя она не получила широкой огласки: https://github.com/akashche/tzdbgen

У IBM есть TZUpdater. Вкратце рассказал Тиму о вариантах открытия исходного кода. Мы расследуем.

Азул тоже обсуждает это

Здравствуйте, есть ли что-нибудь новенькое по этой проблеме?

Спасибо

@SueChaplain Есть новости с вашей стороны? Я буду преследовать Азула формально.

Отправили официальный запрос в Azul

Я попробовал также другой инструмент, предложенный @keirlawso. Я использую accepttopenjdk 12, и кажется, что он работает, но не ясно, как передать дополнительные файлы tz, связанные с версией openjdk. Таким образом, инструмент использует только стандартные файлы, поэтому у него неполная документация или функции. Я также открыл проблему с github для этого инструмента.

@karianna - здесь все еще продолжаются дискуссии, чтобы подтвердить оригинальность кода. Будет прод.

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

Просто чтобы проинформировать сообщество:
Azul tzupdater работает только с accepttopenjdk 8.
Я пробовал это с нашими контейнерами докеров с последней версией iana db: 2019a с этой версией:

https://web.cs.ucla.edu/~eggert/tz/release

Официальные базы данных tar.gz IANA содержат ошибки, поэтому мы используем эту.
Так что на данный момент, чтобы решить эту проблему, нам нужно перейти на java 8. (Часовой пояс более важен, чем сама версия java в нашем случае).

Может быть, Azul сможет проверить поддержку java 11 и 12, чтобы инструмент мог правильно работать с accepttopenjdk, без больших изменений или перезаписи большого количества кода.

Похоже, у OpenJDK уже есть утилита для решения части проблемы, хотя она не получила широкой огласки: https://github.com/akashche/tzdbgen

см. также: ZoneRulesBuilder.java в пути /make/src/classes/build/tools/tzdb/ jdk8

Есть ли обновления для решений Azul или IBM?

@karianna - здесь все еще продолжаются дискуссии, чтобы подтвердить оригинальность кода. Будет прод.

Привет, Сью,

Тебе еще повезло?

Кажется, это работает на zulu, openjdk и corretto (или, по крайней мере, он не бросает, не проверяет даты и часовые пояса).

https://bell-sw.com/pages/iana-updater/

Однако он использует формат «арьергарда»; поэтому вы должны сами создать tzdata.tar.gz.

git clone https://github.com/eggert/tz
git checkout 2019b
make tarballs

java -jar IANAUpdater.jar -t ${JAVA_HOME} -z  tzdata2019b-rearguard.tar.tz

Последняя версия oracle tzupdater работает с openjdk, но не с zulu или corretto.
https://github.com/akashche/tzdbgen кажется заброшенным, и это бросает.
зиупдатер от азула тоже кидает.
Но копирование / вставка build.tools.tzdb из java.net/openjdk в проект, похоже, работает.

Все java "tz-parser" используют формат "арьергард". Но IANA публикует только «авангардный» формат.

@paulocesarcuneo

Выполните make rearguard_tarballs вместо make в папке tzdb-xxx (полное распространение базы данных часовых поясов IANA), чтобы сгенерировать допустимые входные данные для tzdbgen , TZUpdater или IANAUpdater

@karianna - @ andrew-m-leonard и его команда наблюдали за происходящим и могут сообщить вам, как это происходит.

Привет, Сью,

Тебе еще повезло?

IBM Timezone Updater в настоящее время поддерживает только обновления, сделанные для IBM Java 1.4.2, 5.0, 6, 7 и 8. Он не поддерживает обновления, сделанные для OpenJDK8 или OpenJDK9 + (для обоих вариантов Hotspot или OpenJ9). В настоящее время мы изучаем, что нужно сделать, чтобы программа обновления часовых поясов работала с этими версиями. Будем держать вас в курсе о ходе этой работы.

Привет, похоже, что версия 1.0.2.2 Azul ziupdater jar теперь, похоже, правильно обновляет данные часового пояса при использовании файла часового пояса 2019b в формате арьергарда с Java 11

@djphillyp Работает ли программа обновления Azul для jdk8?

Просто прочтите документ! он поддерживает jdk8 :-)

@karianna Поскольку у Azul уже есть общедоступная программа обновления часового пояса, которая работает с Java 11, есть ли причина использовать IBM Timezone Updater? Единственная функция инструмента IBM, которой нет в пакете Azul, - это возможность обновить набор установок Java на жестком диске из файла настроек и, при необходимости, сгенерировать файл настроек, используя набор критериев включения / исключения.

Для тех, кто хочет более позднюю версию формата «арьергард», вы можете создать свой собственный. См. Https://stackoverflow.com/questions/56908541/update-to-tzdata2019b-is-failing-tzupdater-version-2-2-0-b01

@karianna Поскольку у Azul уже есть общедоступная программа обновления часового пояса, которая работает с Java 11, есть ли причина использовать IBM Timezone Updater? Единственная функция инструмента IBM, которой нет в пакете Azul, - это возможность обновить набор установок Java на жестком диске из файла настроек и, при необходимости, сгенерировать файл настроек, используя набор критериев включения / исключения.

Я не знал, что это общедоступно? Пришлось вручную запросить у них исходный код ...

Общедоступный двоичный файл. Нужен ли нам источник?

Общедоступный двоичный файл. Нужен ли нам источник?

Да, нам нужен источник :-) - Примите политику, чтобы не создавать сборки с таинственным мясом.

Я могу ошибаться, но нельзя ли обернуть этот код, чтобы обеспечить функциональность?

https://github.com/openjdk/jdk/tree/0c3f9c6012a5878bc9275a5abad6b3d044a30ba7/make/jdk/src/classes/build/tools/tzdb

Я также заметил, что недавно было принято решение о поддержке «авангардного» формата, что также упростило бы ситуацию, поскольку файлы, опубликованные IANA, можно было бы использовать напрямую снова!

@paulocesarcuneo

Выполните make rearguard_tarballs вместо make в папке tzdb-xxx (полное распространение базы данных часовых поясов IANA), чтобы сгенерировать допустимые входные данные для tzdbgen , TZUpdater или IANAUpdater

Результат:

make: * Нет правила для создания цели 'Rearguard_tarballs'. Стоп.

@paulocesarcuneo
Результат:
make: * Нет правила для создания цели 'Rearguard_tarballs'. Стоп.

убедитесь, что вы скачали полный комплект с исходниками. Next только что сработал для меня:

wget https://data.iana.org/time-zones/releases/tzdb-2019b.tar.lz
lzip -d tzdb-2019b.tar.lz
tar xf tzdb-2019b.tar
cd tzdb-2019b /
сделать Rearguard_tarballs

@paulocesarcuneo
Результат:
make: * Нет правила для создания цели 'Rearguard_tarballs'. Стоп.

убедитесь, что вы скачали полный комплект с исходниками. Next только что сработал для меня:

wget https://data.iana.org/time-zones/releases/tzdb-2019b.tar.lz
lzip -d tzdb-2019b.tar.lz
tar xf tzdb-2019b.tar
cd tzdb-2019b /
сделать Rearguard_tarballs

Та же ошибка. :(

@paulocesarcuneo, тогда что-то другое с вашей средой. Попробуйте docker run ubuntu

@paulocesarcuneo @sgrinev Моя проблема - Ubuntu 16.04, решение:

make AWK=gawk rearguard_tarballs

java -Djava.vendor="Oracle Corporation" -verbose:class -jar "${PWD}/tzupdater.jar" -v -l "file://${PWD}/${RGTZ}"

к вашему сведению, https://github.com/AdoptOpenJDK/TSC/issues/123

Таким образом я решил мою проблему:

sudo java -Djava.vendor="Oracle Corporation" -jar "${PWD}/tzupdater.jar" -l

какие-нибудь обновления здесь?

Сегодня он снова сломал системы tzupdater Oracle версии 2.3.1 не любит этот новый выпуск 2020b и терпит неудачу.

https://stackoverflow.com/questions/64254417/tzupdate-failures-with-2020b

Может быть, сейчас самое подходящее время, чтобы это сделать

@JigarJoshi Похоже, что Oracle опубликовала версию 2.3.2, в которой, учитывая, что ошибка теперь помечена как устраненная, я надеюсь, что эта проблема будет исправлена.

@keirlawson, ты

@ andrew-m-leonard да, проблема исправлена ​​в версии 2.3.2.

Как вы думаете, все еще стоит добавить версию OpenJDK средства обновления часового пояса?

Как вы думаете, все еще стоит добавить версию OpenJDK средства обновления часового пояса?

Было бы здорово - я думаю, лучше всего было бы очень вежливо спросить Oracle, подумают ли они об этом.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги