tu-*_*duh 72 package-management versions java openjdk
虽然希望从源代码编译 OpenJDK,但最新的通用版本 ( OpenJDK 10.0.1 ) 坚持使用 OpenJDK 9 或 10。然而,JDK 11 将在2018年9 月之前发布。
然而,令我惊讶的是,当我这样做时apt search openjdk,结果是:
...
openjdk-11-jdk - OpenJDK Development Kit (JDK)
...
openjdk-8-jdk - OpenJDK Development Kit (JDK)
...
Run Code Online (Sandbox Code Playgroud)
没有 OpenJDK 9 或 10!
等等,那是 OpenJDK 11 吗?也许是 Beta 版?不……
所以我看了看apt show openjdk-11-jdk:
Package: openjdk-11-jdk
Version: 10.0.1+10-3ubuntu1
...
Run Code Online (Sandbox Code Playgroud)
为什么 OpenJDK 10 被打包为 openjdk-11-*??
mur*_*uru 63
这是因为这些包在发布时将成为 OpenJDK 11。请参阅此邮件列表帖子:
我代表 Ubuntu Foundations 团队,请求 OpenJDK 的 SRU 例外。我们的计划是发布 OpenJDK 10 作为Bionic的默认 JRE/JDK 1,然后在 2018 年 9 月/10 月将主要的默认 JRE/JDK 作为 SRU 移动到 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 之间的增量相比,该增量相当大。因此,我们应该在 18.04 中将 OpenJDK 10 作为默认 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 中可能还需要更新一些软件包,但作为例外,将在 Bionic 转换完成后进行。
另一个 Ubuntu 开发者Tiago Stürmer Daitx 指出:
[我们] 计划更新受此转换影响的 Java 应用程序。
更具体地说,任何无法使用 openjdk-11 正确运行的包都将被调查,并且是更新的候选者。更新并不一定意味着我们将使用最新版本:我们可能只是应用或向后移植允许它们在 openjdk-11 下工作的更改。
目前还没有ETA。相当多的软件包已经更新并添加到由过渡团队维护的各种 PPA 中,因此如果您希望帮助进行测试,请查看它们。
似乎已经发布了修复程序。现在apt show openjdk-11-jdk显示:
Package: openjdk-11-jdk
Version: 11.0.2+9-3ubuntu1~18.04.3
Run Code Online (Sandbox Code Playgroud)
的输出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)
Run Code Online (Sandbox Code Playgroud)
小智 5
见上面muru的回答,
但是为了解决这个问题,您可以手动安装 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
Run Code Online (Sandbox Code Playgroud)
解压/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'
Run Code Online (Sandbox Code Playgroud)
在替代品中看到它
$ 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
Run Code Online (Sandbox Code Playgroud)
检查它是否有效
$ 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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18902 次 |
| 最近记录: |