所有安装说明都提到使用 apt-get 安装 default-jre 包,这很好,但截至撰写本文时,安装的是 OpenJDK Java 1.8.0_171。我们的一个应用程序无法使用此版本,供应商告诉我们他们认证的最后一个版本是 1.8.0_131。我们生产的其他服务器也使用这个版本,但在新服务器上安装时,我们似乎找不到下载或指定 _131 版本的方法。是否有一个旧版本软件包的存储库,我们可以从中拉取并手动安装?有没有办法将已安装的软件包从一台机器“复制”到另一台机器?
答案1
我已经发现镜子为 OpenJDK (1.8.0_131) 托管 debian 软件包。
您可以下载所需版本 1.8.0_131 的以下 Debian 软件包。
openjdk-8-dbg_8u131-b11-2ubuntu1.16.04.3_amd64.deb
openjdk-8-demo_8u131-b11-2ubuntu1.16.04.3_amd64.deb
openjdk-8-jdk-headless_8u131-b11-2ubuntu1.16.04.3_amd64.deb
openjdk-8-jdk_8u131-b11-2ubuntu1.16.04.3_amd64.deb
openjdk-8-jre-headless_8u131-b11-2ubuntu1.16.04.3_amd64.deb
openjdk-8-jre-jamvm_8u131-b11-2ubuntu1.16.04.3_amd64.deb
openjdk-8-jre_8u131-b11-2ubuntu1.16.04.3_amd64.deb
openjdk-8-source_8u131-b11-2ubuntu1.16.04.3_all.
以上软件包适用于 Ubuntu 16.04 LTS。您可以复制到任何其他系统并使用sudo dpkg -i
命令手动安装。
您也可以使用相同的链接下载以下 tar 文件以手动安装 openjdk。
openjdk-8_8u131-b11-2ubuntu1.16.04.3.debian.tar.xz
openjdk-8_8u131-b11.orig.tar.xz
答案2
因此,对于有关将包从一个安装复制到另一个安装的问题的后半部分,我能够使用该dpkg-repack
包生成一个 .deb 文件,其中包含在另一台服务器上“离线”安装所需的 OpenJDK 包,如下所示:
apt-get install dpkg-repack
dpkg-repack openjdk-8-jre-headless
dpkg-repack openjdk-8-jre
dpkg-repack ca-certificates-java
dpkg-repack java-common
在目标服务器上,我删除了default-jre
包、java-common
和ca-certificates-java
使用包apt-get remove
来清除较新的版本。
然后可以使用以下方式安装旧版本(根据需要调整文件名):
dpkg -i openjdk-8-jre-headless_8u131-b11-2ubuntu1.16.04.3_amd64.deb ca-certificates-java_20160321_all.deb
Headless 包和证书必须一起安装(依赖关系问题另行解决)。然后可以添加其他内容(不确定是否需要,但对我来说有效):
dpkg -i openjdk-8-jre_8u131-b11-2ubuntu1.16.04.3_amd64.deb
dpkg -i java-common_0.56ubuntu2_all.deb
运行完所有这些之后,java -version
我得到了所需版本的预期输出:
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
注意:这包括从您已有所需版本的服务器复制软件包。如果有人可以回答第一个问题,例如,是否有在线存储库或其他方式下载和安装特定的 OpenJDK 版本,请将其添加为答案,因为这将是一种更理想的方式,可用于未来的安装。