Temurin-build: كيفية تحديث بيانات المنطقة الزمنية مع تبنّي OpenJDK

تم إنشاؤها على ٢٥ أبريل ٢٠١٩  ·  50تعليقات  ·  مصدر: adoptium/temurin-build

لقد كنت أحاول تحديث بيانات المنطقة الزمنية في أحدث صورة تبنّي OpenJDK 11 ، ولكن لا يبدو أن tzupdater من Oracle يعمل ، ويتعطل مع استثناء مؤشر فارغ. هل هناك طريقة موصى بها لتحديث المناطق الزمنية باستخدام AcceptOpenJDK؟

blocked bug

التعليق الأكثر فائدة

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

ال 50 كومينتر

هل يحدث هذا مع اعتماد ثنائي خارج 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 Ah يبدو أنك تعمل على جهاز 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؟ نأمل أن نتمكن من شوكة / التصحيح
التي تعمل مع اعتماد

يوم السبت ، 27 أبريل 2019 الساعة 12:13 ، كتب Ali Ince [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
.

>

في صحتك ، Martijn (مرسل من Gmail Mobile)

نعم ، لقد وجدت مصدر Azul ، لكن لم أتمكن من العثور على المصدر في أي مكان على الرغم من أنه من المفترض أنه مفتوح المصدر. ربما إذا كان لدى شخص ما جهة اتصال في Azul ، فقد يتمكن من إخراجها منه؟

ما زلت غير متأكد مما إذا كان ZIUpdater الخاص بـ Azul قد تم إصداره برمز المصدر أم لا ، لأنه يحتوي على هذه المعلومات في أسفل الصفحة التي ربطتها من قبل

يرجى إرسال الأسئلة / المشاكل / طلبات لقطة المصدر على [email protected]

لكن نظريًا يمكننا أن نطلب رموز المصدر. هل لدينا اتصالات في Azulkarianna؟

نعم ، سأقوم باختبار اتصالهم الآن.

يبدو أن OpenJDK قد يكون لديه بالفعل أداة مساعدة لحل جزء من المشكلة ، على الرغم من عدم نشرها على نطاق واسع: https://github.com/akashche/tzdbgen

آي بي إم لديها TZUpdater. تحدث باختصار إلى Tim حول خيارات فتح المصدر عليه. نحن نحقق.

أزول تناقش هذا أيضًا

مرحبا هل من جديد عن هذه المشكلة؟

شكرا لك

SueChaplain هل من أخبار من جانبك؟ سأطارد أزول رسميًا.

أرسلوا طلبًا رسميًا إلى Azul

لقد جربت أيضًا الأداة الأخرى التي اقترحهاkeirlawso. أستخدم adaptopenjdk 12 ويبدو أنه يعمل ولكن ليس من الواضح كيفية تمرير ملفات tz الإضافية المتعلقة بإصدار openjdk. لذلك تستخدم الأداة الملفات القياسية فقط لذا فهي تحتوي على وثائق أو وظائف غير مكتملة. فتحت أيضًا مشكلة جيثب لهذه الأداة.

karianna - المناقشات لا تزال جارية هنا لتأكيد أصالة الكود. سوف يحث.

نأمل أن يتوفر tzupdater قريبًا ، فلدينا منصة سحابية للمنطقة الزمنية الحرجة ، مع المدفوعات والفواتير ، تعد المنطقة الزمنية جزءًا حيويًا من خدماتنا المصغرة.

فقط لإعلام المجتمع:
يعمل Azul tzupdater فقط مع تبنّي 8.
جربته مع حاويات Docker الخاصة بنا مع آخر iana db: 2019a مع هذا الإصدار:

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

تحتوي قواعد بيانات IANA tar.gz الرسمية على أخطاء ، لذلك نستخدم هذا الخطأ.
حتى الآن ، لإصلاح هذه المشكلة ، يتعين علينا الرجوع إلى إصدار جافا 8. (المنطقة الزمنية أكثر أهمية من إصدار جافا نفسه في حالتنا).

ربما يمكن لـ Azul التحقق من دعم جافا 11 و 12 ، بحيث يمكن للأداة العمل بشكل صحيح مع adaptopenjdk ، دون إجراء تغييرات كبيرة أو الكتابة فوق الكثير من التعليمات البرمجية.

يبدو أن 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/

يستخدم تنسيق "rearguard" ، بالرغم من ذلك ؛ لذلك يجب عليك بناء 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 ، لكن ليس مع الزولو ولا كوريتو.
https://github.com/akashche/tzdbgen يبدو مهجورًا ، ويلقي.
يلقي ziupdater من azul أيضًا.
ولكن يبدو أن نسخ / لصق build.tools.tzdb من java.net/openjdk إلى proyect يعمل.

تستخدم جميع برامج java "tz-parser" تنسيق "rearguard". لكن IANA تنشر فقط التنسيق "الطليعي".

تضمين التغريدة

يرجى تنفيذ make rearguard_tarballs بدلا من make في المجلد tzdb-xxx (IANA المنطقة الزمنية قاعدة بيانات توزيع كامل) لتوليد الدخل سارية المفعول ل tzdbgen ، TZUpdater أو IANAUpdater

karianna - @ andrew-m-

مرحبا سو ،

هل كان لديك المزيد من الحظ؟

لا يدعم محدث المنطقة الزمنية من IBM حاليًا سوى التحديثات التي يتم إجراؤها على 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 As Azul بالفعل محدث منطقة زمنية متاح للجمهور يعمل مع Java 11 ، هل هناك أي سبب لاستخدام محدث المنطقة الزمنية من IBM؟ الوظيفة الوحيدة التي تمتلكها أداة IBM والتي ليست في حزمة Azul هي القدرة على تحديث مجموعة من تثبيتات Java على محرك أقراص ثابت من ملف إعدادات وإنشاء ملف الإعدادات اختياريًا باستخدام مجموعة من معايير التضمين / الاستبعاد.

لأي شخص يريد إصدارًا أحدث من تنسيق "rearguard" ، يمكنك إنشاء تنسيق خاص بك. راجع https://stackoverflow.com/questions/56908541/update-to-tzdata2019b-is-failing-tzupdater-version-2-2-0-b01

لدىkarianna As Azul بالفعل محدث منطقة زمنية متاح للجمهور يعمل مع Java 11 ، هل هناك أي سبب لاستخدام محدث المنطقة الزمنية من IBM؟ الوظيفة الوحيدة التي تمتلكها أداة IBM والتي ليست في حزمة Azul هي القدرة على تحديث مجموعة من تثبيتات Java على محرك أقراص ثابت من ملف إعدادات وإنشاء ملف الإعدادات اختياريًا باستخدام مجموعة من معايير التضمين / الاستبعاد.

لم أكن أعلم أن هذا كان متاحًا للعامة؟ اضطررت إلى طلب رمز المصدر يدويًا منهم ...

ثنائي متاح للجمهور. هل نحتاج المصدر؟

ثنائي متاح للجمهور. هل نحتاج المصدر؟

نعم ، نحن بحاجة إلى المصدر :-) - تبنَّ سياسة كي لا يكون لدينا بناء غامض للحوم.

قد أكون مخطئًا ولكن هل يمكن عدم التفاف هذا الرمز لتوفير الوظيفة؟

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

كما لاحظت أن هناك التزامًا مؤخرًا بذلك لدعم تنسيق "الطليعة" ، والذي من شأنه تبسيط الأمور أيضًا حيث يمكن استخدام الملفات المنشورة بواسطة IANA مباشرةً مرة أخرى!

تضمين التغريدة

يرجى تنفيذ make rearguard_tarballs بدلا من make في المجلد tzdb-xxx (IANA المنطقة الزمنية قاعدة بيانات توزيع كامل) لتوليد الدخل سارية المفعول ل tzdbgen ، TZUpdater أو IANAUpdater

نتيجة:

جعل: * لا توجد قاعدة لجعل الهدف "rearguard_tarballs". قف.

تضمين التغريدة
نتيجة:
جعل: * لا توجد قاعدة لجعل الهدف "rearguard_tarballs". قف.

تأكد من تنزيل الحزمة الكاملة مع المصادر. لقد عمل التالي للتو بالنسبة لي:

wget https://data.iana.org/time-zones/releases/tzdb-2019b.tar.lz
lzip -d tzdb-2019b.tar.lz
tar xf tzdb-2019b.tar
مؤتمر نزع السلاح tzdb-2019b /
اصنع الكرات الخلفية

تضمين التغريدة
نتيجة:
جعل: * لا توجد قاعدة لجعل الهدف "rearguard_tarballs". قف.

تأكد من تنزيل الحزمة الكاملة مع المصادر. لقد عمل التالي للتو بالنسبة لي:

wget https://data.iana.org/time-zones/releases/tzdb-2019b.tar.lz
lzip -d tzdb-2019b.tar.lz
tar xf tzdb-2019b.tar
مؤتمر نزع السلاح tzdb-2019b /
اصنع الكرات الخلفية

نفس الخطأ. :(

paulocesarcuneo إذن هناك شيء مختلف في بيئتك. جرب docker run ubuntu

paulocesarcuneosgrinev مشكلتي هي أوبونتو 16.04، والحل:

make AWK=gawk rearguard_tarballs

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

بهذه الطريقة حلت مشكلتي:

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 التقييمات