为什么将OpenJDK 10打包为openjdk-11- *?


70

在寻求从源代码编译OpenJDK时,最新的通用可用性版本(OpenJDK 10.0.1)坚持使用OpenJDK 9或10。但是,JDK 11 将于20189月发布。

但是,令我惊讶的是,当我这样做时apt search openjdk,结果是:

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

没有OpenJDK 9或10!

等一下,那是OpenJDK 11吗?也许是Beta版本?不...

所以我看着apt show openjdk-11-jdk

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

为什么将OpenJDK 10打包为openjdk-11- *?

Answers:


62

这是因为这些软件包在发布时将变成OpenJDK 11。请参阅此邮件列表帖子

我代表Ubuntu Foundations Team向OpenJDK请求SRU例外。我们的计划是将OpenJDK 10作为Bionic 的默认JRE / JDK 1发行,然后将默认的JRE / JDK作为SRU移至2018年9月/ 10月的OpenJDK 11中。

=拟议计划=

Bionic将与OpenJDK 10一起发布,作为默认的JRE / JDK,一旦达到GA,OpenJDK 11将替换它。

...

如果我们打算在仿生版本发布后切换到OpenJDK 11,则我们希望避免在发布时将OpenJDK 8作为仿生版本中的默认JRE / JDK,因为存在于8和11之间的任何其他接口增量不仅会使档案损坏,它也使JDK的外部使用者遭受破坏。相比之下,OpenJDK 10和OpenJDK 11之间的接口增量应该很小,尤其是与我们已经知道的OpenJDK 8和OpenJDK 9之间的增量相比。因此,我们应该使用OpenJDK 10作为18.04中的默认JDK进行发行,并在发行时过渡到OpenJDK 11。

这就是为什么openjdk-11-*实际调用的源包的原因openjdk-lts


已提交错误报告 -请订阅它(但除非有新信息要添加,否则请不要评论,这是不可能的)。一个Ubuntu开发者Jeremy Bicha已回应:

目的是在Ubuntu 18.04 LTS中将openjdk-11升级到11。这就是为什么这样命名的原因。这是一个重大更改,需要一些时间来准备。因为它会完成,所以不需要要求这样做。

Ubuntu 18.04 LTS在OpenJDK 11发布之前的几个月发布,因此在Ubuntu 18.04 LTS发布之前不可能提供OpenJDK 11。

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的安全更新。这引入了运行时和FTBFS问题,这些问题也需要将多个软件包反向移植到安全性口袋中。

这些软件包是在https://launchpad.net/~openjdk-11-transition小组的PPA上构建的 。PPA仅取决于安全保护袋,并且分阶段进行。

基金会和安全团队之间商定的过程是,将PPA中的程序包二进制复制到仿生提议的副本中,检查是否存在迁移问题,并且-没有待解决的问题-复制到仿生安全性中。

[...]

某些软件包可能还需要在Cosmic中进行更新,但有一个例外,它将在完成仿生转换后进行。

另一个Ubuntu开发人员TiagoStürmerDaitx指出

[我们]计划更新受此过渡影响的Java应用程序。

更具体地说,将对任何无法在openjdk-11上正确运行的软件包进行调查,并可以选择进行更新。更新并不一定意味着我们将使用最新版本:我们可能只是应用或反向移植更改,使它们可以在openjdk-11下工作。

目前尚无ETA。相当多的软件包已更新,并已添加到过渡团队维护的各种PPA中,因此,如果您希望帮助测试,请进行检出。


2019年4月17日更新:

似乎已发布修复程序。现在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
但是,知道发布日期并不会缩短质量检查所需的时间。如果您着急,则PPA已更新:launchpad.net/~openjdk-r/+archive/ubuntu/ppa我希望这些软件包能很快提出,并从那里开始进行更新。
穆鲁

10
我相信此评论,但我看不出它们如何有效地对jdk版本进行错误分类是正确的事情。这很令人困惑,我会说,有点不诚实。只要提供版本供我们选择,我们就可以自己做update-alternatives。感谢@muru你的答案
丹尼尔·伊诺霍萨

10
@muru现在已经快一个月了,还不算太晚吗?
9ilsdx 9rvj 0lo

14
@ 9ilsdx9rvj0lo有人提交了错误报告,请密切注意:bugs.launchpad.net/ubuntu/+source/openjdk-lts/+bug/1796027
muru

5

参见上面的大师的答案,

但是要解决此问题,您可以手动安装openjdk 11并将其添加到update-alternatives中,以便您可以切换版本,当官方软件包更新时,您可以切换到该版本。看到下面看如何:

$ 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

在/usr/lib/jvm/jdk-11.0.2下解压缩jdk

然后将其添加到替代系统

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!:-)
tudor

谢谢,所以我应该问一个新的问题:“我该如何解决这个问题?然后回答?”
Karl

从技术上讲,是的。您的答案是对以下问题的答案:“如何安装Java的最新(非存储库)版本?” 而我的问题更多地是关于分配政治和随之而来的混乱。此外,您将获得该问题的问题点和答案点,并且搜索起来会更容易。然后将该问题与该问题链接为“相关”。:-)
tudor

下次:-)欢呼声
卡尔

如此受欢迎的答案成为了devzone的文章:dzone.com/articles/…不用等待。相反
Kieveli
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.