ทำไม OpenJDK 10 ถึงได้รับการบรรจุเป็น openjdk-11- *?


70

ขณะที่มองการรวบรวมจากแหล่ง OpenJDK, ใหม่ล่าสุดรุ่นมีจำหน่ายทั่วไป ( OpenJDK 10.0.1 ) ยืนยันใน OpenJDK 9 หรือ 10 JDK 11 แต่ไม่ได้เกิดจากการได้รับการปล่อยตัวจนกว่ากันยายน 2018

อย่างไรก็ตามเพื่อความประหลาดใจของฉันเมื่อฉันทำapt search openjdkผลคือ:

...
openjdk-11-jdk - OpenJDK Development Kit (JDK)
...
openjdk-8-jdk - OpenJDK Development Kit (JDK)
...

ไม่มี OpenJDK 9 หรือ 10!

และเดี๋ยวก่อนนั่นคือ OpenJDK 11 ใช่ไหม อาจเป็นรุ่นเบต้าหรือไม่ Nooo ....

ดังนั้นฉันดูที่apt show openjdk-11-jdk:

Package: openjdk-11-jdk
Version: 10.0.1+10-3ubuntu1
...

ทำไม OpenJDK 10 ถึงได้รับการจัดทำเป็น openjdk-11- *?

คำตอบ:


62

นี่เป็นเพราะแพ็คเกจเหล่านั้นจะกลายเป็น OpenJDK 11 เมื่อมีการเปิดตัว ดูโพสต์รายชื่อผู้รับจดหมายนี้ :

ในนามของทีมงาน Ubuntu Foundations ฉันขอ SRU exception สำหรับ OpenJDK แผนของเราคือการปล่อย OpenJDK 10 เป็นค่าเริ่มต้น JRE / JDK 1สำหรับ Bionic จากนั้นย้าย JRE / JDK เริ่มต้นเป็นหลักไปยัง OpenJDK 11 ในเดือนกันยายน / ตุลาคม 2018 เป็น SRU

แผนเสนอ =

ไบโอนิคจะเปิดตัวพร้อมกับ OpenJDK 10 เนื่องจาก JRE / JDK เริ่มต้นและ OpenJDK 11 จะมาแทนที่เมื่อถึง GA

...

หากเราจะเปลี่ยนเป็น OpenJDK 11 ในไบโอนิคเมื่อเปิดตัวเราต้องการหลีกเลี่ยง OpenJDK 8 เป็นค่าเริ่มต้น JRE / JDK ใน Bionic ณ เวลาที่วางจำหน่ายเพราะเดลต้าอินเตอร์เฟสเพิ่มเติมใด ๆ ที่มีอยู่ระหว่าง 8 ถึง 11 ไม่เพียงแสดงการเก็บถาวร มันยังทำให้ผู้บริโภคภายนอกของ JDK แตก ในการเปรียบเทียบอินเทอร์เฟซเดลต้าระหว่าง OpenJDK 10 และ OpenJDK 11 คาดว่าจะมีขนาดค่อนข้างเล็กโดยเฉพาะอย่างยิ่งเมื่อเปรียบเทียบกับเดลต้าระหว่าง OpenJDK 8 และ OpenJDK 9 ที่เรารู้อยู่แล้วว่ามีขนาดใหญ่ ดังนั้นเราจึงควรเผยแพร่ด้วย OpenJDK 10 เป็นค่าเริ่มต้น JDK ใน 18.04 เปลี่ยนไปใช้ OpenJDK 11 เมื่อมีการเปิดตัว

นั่นเป็นเหตุผลที่แพคเกจที่มาของเรียกว่าจริงopenjdk-11-*openjdk-lts


มีการรายงานข้อผิดพลาด - โปรดสมัครสมาชิก (แต่อย่าแสดงความคิดเห็นจนกว่าคุณจะมีข้อมูลใหม่ที่จะเพิ่มซึ่งไม่น่าเป็นไปได้) นักพัฒนา Ubuntu ชื่อ Jeremy Bicha ตอบ:

จุดประสงค์คือการอัพเกรด openjdk-11 เป็น 11 ใน Ubuntu 18.04 LTS นั่นเป็นเหตุผลที่มันถูกตั้งชื่อแบบนั้น เป็นการเปลี่ยนแปลงครั้งใหญ่และจะใช้เวลาในการเตรียมตัว ไม่จำเป็นต้องขอให้ทำเพราะจะทำ

Ubuntu 18.04 LTS เปิดตัวหลายเดือนก่อนที่จะเปิดตัว OpenJDK 11 ดังนั้นจึงไม่สามารถให้ OpenJDK 11 ได้ก่อนที่ Ubuntu 18.04 LTS จะวางจำหน่าย

https://lists.ubuntu.com/archives/ubuntu-release/2018-March/004364.html

ขออภัยในความไม่สะดวก.

2018-11-24: โปรดอย่าขอ ETA นั่นจะส่งอีเมลให้ทุกคนที่สมัครรับข้อมูลบั๊กนี้และไม่ได้ช่วยแก้ไขบั๊ก

ข้อผิดพลาดนี้กำลังทำงานอยู่ openjdk 11.0.1 ได้รับการปรับปรุงใน 18.10 และมีการปรับปรุงความปลอดภัยที่จำเป็นต้องได้รับการจัดการอย่างรวดเร็วใน 18.04 LTS 11.0.1 จะมาที่ 18.04 LTS เมื่อพร้อม แต่เป็นการเปลี่ยนแปลงครั้งสำคัญที่ต้องประสานงานอย่างระมัดระวัง

2019-02-26: ข้อผิดพลาดนี้ได้รับการจัดการในข้อผิดพลาด 1814133 ดังนั้นฉันจึงทำเครื่องหมายซ้ำ การอภิปรายเพิ่มเติมควรเกิดขึ้นกับข้อผิดพลาดนั้นแทนที่จะมาที่นี่


รายงานข้อผิดพลาดใหม่ได้รับการเปิดสำหรับการติดตามการเปลี่ยนแปลงทั้งหมดที่ต้องทำและมีจำนวนมากของพวกเขา - นับคร่าวๆของ 140. ข้อความที่ตัดตอนมาจากรายงานข้อผิดพลาด:

การเปลี่ยนแปลงนี้เป็นการอัปเดตความปลอดภัยของ openjdk-lts จาก openjdk-10 ถึง openjdk-11 สิ่งนี้นำเสนอปัญหา runtime และ FTBFS ที่ต้องการ backport ของหลายแพ็คเกจในกระเป๋าความปลอดภัยเช่นกัน

แพ็คเกจกำลังถูกสร้างบน PPAs ภายใต้ https://launchpad.net/~openjdk-11-transition team PPAs ขึ้นอยู่กับกระเป๋ารักษาความปลอดภัยและแยกออกเป็นระยะ ๆ

กระบวนการที่ตกลงร่วมกันระหว่างฐานรากและทีมรักษาความปลอดภัยคือแพคเกจใน PPAs จะถูกคัดลอกไบนานิคลงในไบโอนิคที่เสนอตรวจสอบปัญหาการโยกย้ายและ - ไม่มีปัญหาที่รอดำเนินการ - คัดลอกลงในไบโอนิค

[ ... ]

แพคเกจบางอย่างอาจต้องได้รับการอัปเดตใน Cosmic แต่เป็นข้อยกเว้นที่จะต้องดำเนินการหลังจากการเปลี่ยนแปลงของไบโอนิคสำเร็จ

และอีก Ubuntu Ubuntu dev, Tiago Stürmer Daitx ตั้งข้อสังเกต :

[เรา] กำลังวางแผนที่จะอัปเดตแอป Java ที่ได้รับผลกระทบจากการเปลี่ยนแปลงนี้

จะเจาะจงมากขึ้นแพคเกจใด ๆ ที่ล้มเหลวในการทำงานอย่างถูกต้องด้วย openjdk-11 จะถูกตรวจสอบและเป็นผู้สมัครสำหรับการปรับปรุง การปรับปรุงไม่ได้แปลว่าเราจะใช้เวอร์ชั่นล่าสุด: เราอาจใช้การเปลี่ยนแปลงหรือย้อนกลับที่อนุญาตให้ทำงานภายใต้ openjdk-11

ยังไม่มีการทางพิเศษแห่งประเทศไทยในปัจจุบัน มีการอัปเดตแพ็กเกจจำนวนเล็กน้อยและเพิ่มไปยัง PPAs ต่างๆที่ดูแลโดยทีมงานการเปลี่ยนแปลงดังนั้นหากคุณต้องการความช่วยเหลือในการทดสอบลองดูพวกเขา


อัปเดต 17 เมษายน 2019:

ดูเหมือนว่าการแก้ไขได้รับการเผยแพร่แล้ว ตอนนี้apt show openjdk-11-jdkแสดงให้เห็นว่า:

Package: openjdk-11-jdk
Version: 11.0.2+9-3ubuntu1~18.04.3

และผลลัพธ์ของjava -versionคือ:

openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)

6
แค่สองวัน นั่นเป็นความล่าช้าอย่างมาก? Oo นี่คือแพ็คเกจที่ทาง Canonical ให้การสนับสนุนเป็นเวลาหลายปี ฉันแน่ใจว่าคุณสามารถใช้การสมัครสมาชิก Canonical ของคุณเพื่อเรียกร้องการเปิดตัวที่รวดเร็วยิ่งขึ้น
muru

5
แม้ว่าการทราบวันที่วางจำหน่ายจะไม่ทำให้เวลาในการ QA สั้นลง แต่อย่างใด หากคุณกำลังรีบ PPA ได้รับการอัปเดตแล้ว: launchpad.net/~openjdk-r/+archive/ubuntu/ppaฉันคาดหวังว่าแพ็คเกจจะนำเสนอในไม่ช้าและจากที่นั่นไปจนถึงการอัปเดต
muru

10
ฉันเชื่อว่าความคิดเห็น แต่ฉันไม่เห็นว่าการจัดประเภท jdk อย่างมีประสิทธิภาพเป็นสิ่งที่ถูกต้อง มันสับสนและฉันจะบอกว่ามันไม่ซื่อสัตย์เล็กน้อย เพียงแค่มีรุ่นให้เราเลือกและเราสามารถทำเองupdate-alternativesได้ ขอบคุณ @muru สำหรับคำตอบของคุณ
Daniel Hinojosa

10
@muru ตอนนี้มันเกือบเดือนแล้ว
9ilsdx 9rvj 0lo

14
@ 9ilsdx9rvj0lo บางคนได้ยื่นรายงานข้อผิดพลาดจับตาดูมันแล้ว: bugs.launchpad.net/ubuntu/+source/openjdk-lts/+bug/1796027
muru

5

ดูคำตอบของ muru ด้านบน

แต่สำหรับการหลีกเลี่ยงคุณสามารถติดตั้ง openjdk 11 ด้วยตนเองและเพิ่มลงในทางเลือกการอัปเดตเพื่อให้คุณสามารถสลับเวอร์ชันและเมื่อแพคเกจอย่างเป็นทางการได้รับการอัปเดตคุณสามารถสลับไปที่ ดูด้านล่างเพื่อดูว่า:

$ wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz -O /tmp/openjdk-11.0.2_linux-x64_bin.tar.gz

$ sudo tar xfvz /tmp/openjdk-11.0.2_linux-x64_bin.tar.gz --directory /usr/lib/jvm

ที่คลาย jdk ภายใต้ /usr/lib/jvm/jdk-11.0.2

จากนั้นเพิ่มลงในระบบทางเลือก

sudo sh -c 'for bin in /usr/lib/jvm/jdk-11.0.2/bin/*; do update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 100; done'

sudo sh -c 'for bin in /usr/lib/jvm/jdk-11.0.2/bin/*; do update-alternatives --set $(basename $bin) $bin; done'

เห็นมันในทางเลือก

$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
* 3            /usr/lib/jvm/jdk-11.0.2/bin/java                 100       manual mode

Press <enter> to keep the current choice[*], or type selection number: 3

ตรวจสอบมันใช้งานได้

$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)

ตอบคำถามที่แตกต่างออกไป แต่เมื่อคุณเรียกคำตอบของ muru อย่างดีและมีประโยชน์ฉันจะรับไป +1 ;-) ยินดีต้อนรับสู่ AskUbuntu! :-)
ทิวดอร์

ขอบคุณดังนั้นควรฉันได้ถามใหม่ "ฉันจะทำงานรอบนี้คำถามแล้วตอบได้หรือไม่
คาร์ล

ใช่แล้ว คำตอบของคุณคือคำตอบสำหรับคำถาม "ฉันจะติดตั้ง Java เวอร์ชันล่าสุด (ที่ไม่ใช่ที่เก็บข้อมูล) ได้อย่างไร" ในขณะที่คำถามของฉันเกี่ยวกับการเมืองการกระจายและความสับสนที่เกิดขึ้น นอกจากนี้คุณจะได้คะแนนคะแนนคำถามเช่นเดียวกับคะแนนคำตอบสำหรับคำถามนั้นและมันจะง่ายต่อการค้นหา จากนั้นเชื่อมโยงคำถามนั้นกับคำถามนี้ว่า "เกี่ยวข้อง" :-)
ทิวดอร์

ครั้งต่อไป :-) ไชโย
Karl

คำตอบที่นิยมกันมากมันกลายเป็นบทความdevzone : dzone.com/articles/…ไม่ต้องรอ วิธีอื่น ๆ
Kieveli
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.