Tại sao OpenJDK 10 được đóng gói là openjdk-11- *?


70

Trong khi tìm cách biên dịch OpenJDK từ nguồn, phiên bản chung mới nhất ( OpenJDK 10.0.1 ) nhấn mạnh vào OpenJDK 9 hoặc 10. Tuy nhiên, JDK 11 không được phát hành cho đến tháng 9 năm 2018 .

Tuy nhiên, thật ngạc nhiên, khi tôi làm apt search openjdkkết quả là:

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

Không có OpenJDK 9 hoặc 10!

Còn chờ gì nữa, đó có phải là OpenJDK 11 không? Có lẽ là một bản phát hành Beta? Không ....

Vì vậy, tôi nhìn vào apt show openjdk-11-jdk:

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

Tại sao OpenJDK 10 được đóng gói là openjdk-11- * ??

Câu trả lời:


62

Điều này là do các gói đó sẽ trở thành OpenJDK 11 khi được phát hành. Xem bài đăng danh sách gửi thư này :

Thay mặt Nhóm Sáng lập Ubuntu, tôi yêu cầu một ngoại lệ SRU cho OpenJDK. Kế hoạch của chúng tôi là phát hành OpenJDK 10 dưới dạng JRE / JDK 1 mặc định cho Bionic, sau đó chuyển JRE / JDK mặc định thành chính sang OpenJDK 11 vào tháng 9/10 năm 2018 dưới dạng SRU.

= Kế hoạch đề xuất =

Bionic sẽ được phát hành cùng với OpenJDK 10 vì JRE / JDK mặc định và OpenJDK 11 sẽ thay thế nó khi nó đạt GA.

...

Nếu chúng tôi sẽ chuyển sang OpenJDK 11 trong bionic một khi được phát hành, chúng tôi muốn tránh OpenJDK 8 làm JRE / JDK mặc định trong Bionic tại thời điểm phát hành vì bất kỳ delta giao diện bổ sung nào tồn tại trong khoảng từ 8 đến 11 không chỉ làm lộ kho lưu trữ bị phá vỡ, nó cũng làm cho người tiêu dùng bên ngoài của JDK bị phá vỡ. So sánh, delta giao diện giữa OpenJDK 10 và OpenJDK 11 dự kiến ​​sẽ khá nhỏ, đặc biệt là so với delta giữa OpenJDK 8 và OpenJDK 9 mà chúng ta đã biết là lớn. Do đó, chúng ta nên phát hành với OpenJDK 10 dưới dạng JDK mặc định vào ngày 18.04, chuyển sang OpenJDK 11 khi nó được phát hành.

Đó cũng là lý do tại sao gói nguồn openjdk-11-*thực sự được gọi openjdk-lts.


Một báo cáo lỗi đã được nộp - vui lòng đăng ký nó (nhưng không bình luận trừ khi bạn có thông tin mới để thêm, điều này là không thể). Một nhà phát triển Ubuntu, Jeremy Bicha, đã trả lời:

Mục đích là nâng cấp openjdk-11 lên 11 trong Ubuntu 18.04 LTS. Đó là lý do tại sao nó được đặt tên theo cách đó. Đó là một thay đổi lớn và sẽ mất một thời gian để chuẩn bị. Không cần phải yêu cầu nó được thực hiện vì nó sẽ được thực hiện.

Ubuntu 18.04 LTS đã được phát hành vài tháng trước khi OpenJDK 11 được phát hành nên không thể cung cấp OpenJDK 11 trước khi Ubuntu 18.04 LTS được phát hành.

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

Xin lỗi vì sự bất tiện.

2018-11-24: Vui lòng không yêu cầu ETA. Điều đó sẽ gửi một email cho tất cả mọi người đăng ký lỗi này và không giúp sửa lỗi.

Lỗi này đang được làm việc trên. openjdk 11.0.1 đã được cập nhật vào ngày 18.10 và có một bản cập nhật bảo mật cần được xử lý nhanh chóng trong 18.04 LTS. 11.0.1 sẽ đến 18.04 LTS khi nó sẵn sàng nhưng đó là một thay đổi lớn cần sự phối hợp cẩn thận.

2019-02-26: Lỗi này đã được xử lý trong lỗi 1814133 vì vậy tôi đánh dấu nó là một bản sao. Thảo luận thêm về lỗi đó thay vì ở đây.


Một báo cáo lỗi mới đã được mở để theo dõi tất cả các thay đổi cần thực hiện và có rất nhiều trong số đó - số lượng thô là 140. Trích đoạn từ báo cáo lỗi:

Quá trình chuyển đổi này là bản cập nhật bảo mật của openjdk-lts từ openjdk-10 sang openjdk-11. Điều này giới thiệu các vấn đề về thời gian chạy và FTBFS, cũng yêu cầu nhập nhiều gói vào túi bảo mật.

Các gói đang được xây dựng trên PPA trong nhóm https://launchpad.net/~openjdk-11-transition . Các PPA chỉ phụ thuộc vào túi bảo mật và được phân tách theo từng giai đoạn.

Quá trình thống nhất giữa các cơ sở và nhóm bảo mật là các gói trong PPA sẽ được sao chép nhị phân thành đề xuất bionic, kiểm tra các vấn đề di chuyển và - không có vấn đề nào đang chờ xử lý - được sao chép vào bảo mật bionic.

[...]

Một vài gói cũng có thể cần được cập nhật trong Vũ trụ, nhưng là một ngoại lệ sẽ được thực hiện sau khi quá trình chuyển đổi Bionic được thực hiện.

Và một nhà phát triển Ubuntu khác, Tiago Stürmer Daitx lưu ý :

[Chúng tôi] đang có kế hoạch cập nhật các ứng dụng java bị ảnh hưởng bởi quá trình chuyển đổi này.

Để cụ thể hơn, bất kỳ gói nào không chạy chính xác với openjdk-11 sẽ được điều tra và là một ứng cử viên cho bản cập nhật. Bản cập nhật không nhất thiết có nghĩa là chúng tôi sẽ sử dụng phiên bản mới nhất: chúng tôi có thể chỉ cần áp dụng hoặc thay đổi backport cho phép chúng hoạt động theo openjdk-11.

Hiện tại vẫn chưa có ETA. Khá nhiều gói đã được cập nhật và thêm vào các PPA khác nhau được duy trì bởi nhóm chuyển đổi, vì vậy nếu bạn muốn giúp kiểm tra, hãy kiểm tra chúng.


Cập nhật ngày 17 tháng 4 năm 2019:

Có vẻ như sửa chữa đã được phát hành. Bây giờ apt show openjdk-11-jdkcho thấy:

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

Và đầu ra của java -versionlà:

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
Chỉ hai ngày? Đó là một sự chậm trễ lớn? Oo Đây là một gói mà Canonical cam kết hỗ trợ trong nhiều năm. Tôi chắc chắn rằng bạn có thể sử dụng thuê bao Canonical của mình để yêu cầu phát hành nhanh hơn.
muru

5
Dù vậy, biết ngày phát hành không rút ngắn thời gian cần thiết cho QA. Nếu bạn đang vội, PPA đã được cập nhật: launchpad.net/~openjdk-r/+archive/ubfox/ppa Tôi hy vọng các gói sẽ sớm được đề xuất và từ đó cập nhật.
muru

10
Tôi tin nhận xét này, nhưng tôi không thể thấy cách họ phân loại sai một cách hiệu quả phiên bản jdk là điều nên làm. Thật khó hiểu và tôi sẽ nói điều đó, một chút không trung thực. Chỉ cần có các phiên bản để chúng tôi lựa chọn, và chúng tôi có thể tự làm update-alternatives. Cảm ơn @muru vì câu trả lời của bạn
Daniel Hinojosa

10
@muru bây giờ đã gần một tháng, vẫn chưa có sự chậm trễ lớn?
9ilsdx 9rvj 0lo

14
@ 9ilsdx9rvj0lo ai đó đã nộp báo cáo lỗi, hãy theo dõi nó: bug.launchpad.net/ubfox/+source/openjdk-lts/+orms/1796027
muru 23/10/18

5

Xem câu trả lời của muru ở trên,

nhưng đối với công việc xung quanh bạn có thể cài đặt openjdk 11 theo cách thủ công và thêm nó vào các lựa chọn thay thế cập nhật để bạn có thể chuyển đổi phiên bản và khi gói chính thức được cập nhật, bạn có thể chuyển sang đó. xem bên dưới để xem:

$ 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

giải nén jdk dưới /usr/lib/jvm/jdk-11.0.2

sau đó thêm nó vào hệ thống thay thế

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'

nhìn thấy nó trong các lựa chọn thay thế

$ 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

kiểm tra nó hoạt động

$ 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)

Trả lời một câu hỏi khác nhau, nhưng vì bạn rất hay nhắc đến câu trả lời của muru và nó rất hữu ích, tôi sẽ lấy nó. +1 ;-) Chào mừng bạn đến với AskUbfox! :-)
tudor

cảm ơn, vậy tôi có nên hỏi câu mới "làm thế nào để tôi giải quyết vấn đề này không? sau đó trả lời nó?
Karl

Về mặt kỹ thuật, vâng. Câu trả lời của bạn là câu trả lời cho câu hỏi "Làm cách nào để tôi cài đặt phiên bản Java (không phải kho lưu trữ) mới nhất?" trong khi câu hỏi của tôi là nhiều hơn về chính trị phân phối và sự nhầm lẫn đã xảy ra. Ngoài ra, bạn sẽ ghi được điểm câu hỏi cũng như điểm trả lời cho câu hỏi đó và nó sẽ dễ dàng tìm kiếm hơn. Sau đó liên kết câu hỏi đó với câu hỏi này là "liên quan". :-)
tudor

lần tới :-) chúc mừng
Karl

Một câu trả lời rất phổ biến, nó đã trở thành một bài viết devzone : dzone.com/articles/ Vì Không chờ đợi. Một cách khác
Kieveli
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.