安装 OpenJDK 的确切版本

dag*_*ett 5 apt java openjdk

Ubuntu 17.10(GNU/Linux 4.13.0-16-generic x86_64)

使用以下命令安装java后:

sudo apt install openjdk-8-jdk-headless
Run Code Online (Sandbox Code Playgroud)

我有 java 版本 8u151

但是由于错误(https://bugs.openjdk.java.net/browse/JDK-8189789),我需要安装 Java 8 u144 或 u131 的先前更新。

查看可用版本:

$ apt-cache policy openjdk-8-jdk-headless
openjdk-8-jdk-headless:
  Installed: (none)
  Candidate: 8u151-b12-0ubuntu0.17.10.2
  Version table:
     8u151-b12-0ubuntu0.17.10.2 500
        500 http://us.archive.ubuntu.com/ubuntu artful-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu artful-security/main amd64 Packages
     8u144-b01-2 500
        500 http://us.archive.ubuntu.com/ubuntu artful/main amd64 Packages
Run Code Online (Sandbox Code Playgroud)

当我尝试安装时

$ sudo apt install  openjdk-8-jdk-headless=8u144-b01-2
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 openjdk-8-jdk-headless : Depends: openjdk-8-jre-headless (= 8u144-b01-2) but 8u151-b12-0ubuntu0.17.10.2 is to be installed
E: Unable to correct problems, you have held broken packages.
Run Code Online (Sandbox Code Playgroud)

我在这里卡住了。

问题:如何安装 OpenJDK 8 的精确更新?

Ale*_*nin 2

您可以使用aptitude以下命令:

sudo aptitude install openjdk-8-jdk-headless=8u144-b01-2
Run Code Online (Sandbox Code Playgroud)

在此过程中,Aptitude 会要求选择一个变体来解决此问题,在这种情况下需要选择安装以前版本的软件包openjdk-8-jre-headless

或者您可以手动安装以前版本的软件包:

sudo apt install openjdk-8-jre-headless=8u144-b01-2
sudo apt install openjdk-8-jdk-headless=8u144-b01-2
Run Code Online (Sandbox Code Playgroud)

  • 之前运行 apt list -a openjdk-8-jdk-headless 来查看可用版本。在 Ubuntu 20.04 上,默认情况下未安装 aptitude,因此请使用第二个选项。 (2认同)