如何在 CentOS、Rocky Linux、RHEL 和 Fedora 上安装 Java

介绍

本教程将向您展示如何在当前版本的基于RPM的Linux发行版上安装Java:Red Hat Enterprise Linux,CentOS,Fedora和Rocky Linux。

本教程涵盖了安装最新、默认版本的Java,以及选择任何旧版本进行安装,并根据需要在环境中切换多个版本。

前提条件

在您开始本指南之前,您应该有一个正常的非根用户,在您的服务器上配置了sudo权限 - 这是您应该登录到您的服务器的用户。

步骤 1 – 安装 OpenJDK

有三个不同的版本的Java平台:标准版(SE),企业版(EE)和微版(ME)。本教程是专注于Java SE(Java平台,标准版)。

有两种不同的Java SE包可以安装:Java Runtime Environment(JRE)和Java Development Kit(JDK)。JRE是Java虚拟机(JVM)的实现,允许您运行编译的Java应用程序和applets。

还有两种不同的Java实现:OpenJDK和Oracle Java. 两种实现主要是基于相同的代码,但OpenJDK,Java的参考实现,是完全开源的,而Oracle Java包含一些专有代码。

您可以在单个系统上安装各种版本和版本的Java,但大多数人只需要一个安装。

本节将向您展示如何使用yum包管理器安装预建的 OpenJDK JRE 和 JDK 包。

要使用 yum 安装 OpenJDK,您可以运行sudo yum install java:

1sudo yum install java

默认情况下,尝试安装java而不指定版本将解决为最常见的稳定版本的OpenJDK JRE。

 1[secondary_label Output]
 2Last metadata expiration check: 0:02:38 ago on Tue 22 Feb 2022 04:57:59 PM UTC.
 3Dependencies resolved.
 4========================================================================================
 5 Package Arch Version Repo Size
 6========================================================================================
 7Installing:
 8 java-1.8.0-openjdk x86_64 1:1.8.0.322.b06-2.el8_5 appstream 341 k
 9Installing dependencies:
10 alsa-lib x86_64 1.2.5-4.el8 appstream 488 k
11 atk x86_64 2.28.1-1.el8 appstream 270 k
12 avahi-libs x86_64 0.7-20.el8 baseos 61 k
13 copy-jdk-configs noarch 4.0-2.el8 appstream 29 k
14 cups-libs x86_64 1:2.2.6-40.el8 baseos 432 k
15 fribidi x86_64 1.0.4-8.el8 appstream 88 k
16

与Java一起还会提供多个依赖性。在确认提示中,输入y,然后按Enter,继续安装。您也可能被要求接受您正在安装的库的签名密钥:

1[secondary_label Output]
2Importing GPG key 0x6D745A60:
3 Userid     : "Release Engineering <[email protected]>"
4 Fingerprint: 7051 C470 A929 F454 CEBE 37B7 15AF 5DAC 6D74 5A60
5 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
6Is this ok [y/N]:

输入y,然后再按Enter

要确认这一点,您可以运行java -version,检查现在在您的环境中可用的Java版本:

1java -version

<$>[注] 注: 大多数时候,命令行参数以单个字母参数为前方,或为全字符参数为前方两个参数。

1[secondary_label Output]
2openjdk version "1.8.0_322"
3OpenJDK Runtime Environment (build 1.8.0_322-b06)
4OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

在本教程中,我们澄清了开发的完整JDK环境和运行Java应用程序的JRE环境之间的区别,虽然OpenJDK是Java开源发行版的名称,但您实际上只安装了OpenJDK JRE。 为了安装完整的OpenJDK JDK,您应该安装与其名称附加的devel相应包。 这是其他编程环境的开发包的常见惯例,Java也遵循,尽管这里的术语不合适。

如前所述,您可以安装java-devel以获取默认版本,或指定java-1.8.0-openjdk-devel:

1sudo yum install java-devel
 1[secondary_label Output]
 2DigitalOcean Droplet Agent 63 kB/s | 3.3 kB 00:00
 3Dependencies resolved.
 4========================================================================================
 5 Package Arch Version Repository Size
 6========================================================================================
 7Installing:
 8 java-1.8.0-openjdk-devel x86_64 1:1.8.0.322.b06-2.el8_5 appstream 9.8 M
 9
10Transaction Summary
11========================================================================================
12Install 1 Package
13
14Total download size: 9.8 M
15Installed size: 41 M
16Is this ok [y/N]:

安装此包后,您应该有一个完整的OpenJDK环境,可以编译和运行任何没有特定版本不兼容的Java软件。

步骤 2 – 安装其他 OpenJDK 版本

最近,OpenJDK更改了版本编号方案,以便更密切跟踪Oracle Java版本。为了安装更新的OpenJDK版本,您可以在包名称中指定版本号码,就像1.8.0一样。

1sudo yum install java-17-openjdk
 1[secondary_label Output]
 2Last metadata expiration check: 0:03:36 ago on Tue 22 Feb 2022 05:42:44 PM UTC.
 3Dependencies resolved.
 4========================================================================================
 5 Package Arch Version Repository Size
 6========================================================================================
 7Installing:
 8 java-17-openjdk x86_64 1:17.0.2.0.8-4.el8_5 appstream 244 k
 9Installing dependencies:
10 adwaita-cursor-theme noarch 3.28.0-2.el8 appstream 646 k
11 adwaita-icon-theme noarch 3.28.0-2.el8 appstream 11 M
12 at-spi2-atk x86_64 2.26.2-1.el8 appstream 88 k
13 at-spi2-core x86_64 2.28.0-1.el8 appstream 168 k
14 colord-libs x86_64 1.4.2-1.el8 appstream 234 k
15 java-17-openjdk-headless x86_64 1:17.0.2.0.8-4.el8_5 appstream 41 M
16 lcms2 x86_64 2.9-2.el8 appstream 163 k
17

如前所述,您可以通过将-devel附加到包名称中来安装完整的 JDK 环境,但在此之后,运行java程序仍然会使用您之前默认安装的 OpenJDK 1.8.0 版本,您可以通过运行java -version 来确认:

1java -version
1[secondary_label Output]
2openjdk version "1.8.0_322"
3OpenJDK Runtime Environment (build 1.8.0_322-b06)
4OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

在下一步,您将管理安装的Java版本。

步骤 3 – 设置您的默认Java版本

如果您安装了多个版本的Java,您可能希望将其设置为默认版本(即当用户运行java命令时将运行的命令)。

通过象征链接管理默认命令的替代命令可以用来选择默认的Java版本. 若要列出可以通过替代管理的Java版本,请使用替代 -config java:

1sudo alternatives --config java

输出应该列出您已安装的两种版本的 Java:

1[secondary_label output]
2There are 2 programs which provide 'java'.
3
4  Selection Command
5-----------------------------------------------
6*+ 1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java)
7   2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java)
8
9Enter to keep the current selection[+], or type selection number:

输入一个选择号码以选择哪个java可执行的默认使用。它将重新安排系统上的必要的符号链接,以确保java命令指向正确的库。

1java -version
1[secondary_label Output]
2openjdk version "17.0.2" 2022-01-18 LTS
3OpenJDK Runtime Environment 21.9 (build 17.0.2+8-LTS)
4OpenJDK 64-Bit Server VM 21.9 (build 17.0.2+8-LTS, mixed mode, sharing)

许多Java应用程序还使用JAVA_HOMEJRE_HOME环境变量来确定使用哪个java可执行。

例如,如果您安装了 Java 到 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin(即您的 java 可执行的位置是 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java),您可以将您的 JAVA_HOME 环境变量设置为一个 bash shell 或脚本,如下:

1export JAVA_HOME=(/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre

<$>[note] 注: JAVA_HOME环境变量更喜欢你在/jre目录中结束的Java安装路径。

如果您希望JAVA_HOME为系统上的每个用户设置,请将前一行添加到/etc/environment文件中,您可以使用echo>>壳重定向将其附加到文件中,以避免直接编辑/etc/environment文件,运行此命令:

1sudo sh -c "echo export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre >> /etc/environment"

在下一步,您将与您的OpenJDK版本一起安装Oracle的专有Java。

第4步:安装Oracle Java

本指南的本节将向您展示如何安装 Oracle Java JRE 和 JDK (64 位),这些包的最新版本在本文写作时。

<$>[注] 注: 如果您正在使用本页面上的交互式终端,您将无法在环境中下载和安装Oracle Java。

在整个本节中,我们将使用wget命令来下载Oracle Java软件包。wget可能不会默认包含在您的Linux发行版中,因此为了遵循,您需要通过运行来安装它:

1sudo yum install wget

<$>[注] 在安装 Oracle Java 之前,您必须接受 Java SE 的 Oracle 二进制代码许可协议,这是包含的步骤之一。

<$>[note] 注: 要安装 Oracle Java,您需要访问 Oracle Java 下载页面,接受许可协议,并复制适当的 Linux x86 .rpm 包的下载链接。

转到您的主目录并使用以下命令下载Oracle Java RPM:

1cd ~
2wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.rpm"

然后安装yum localinstall的RPM(如果您下载了不同的版本,请在这里替换文件名):

1sudo yum localinstall jdk-17_linux-x64_bin.rpm

在确认提示中,输入y,然后按 Enter 来继续安装。

您可以删除您之前下载的档案文件:

1rm ~/jdk-17_linux-x64_bin.rpm

您现在可以重新运行替代命令,您应该看到使用Oracle Java的第三种选项:

1sudo alternatives --config java
 1[secondary_label output]
 2There are 3 programs which provide 'java'.
 3
 4  Selection Command
 5-----------------------------------------------
 6   1 java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.322.b06-2.el8_5.x86_64/jre/bin/java)
 7 + 2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java)
 8*  3           /usr/java/jdk-17.0.2/bin/java
 9
10Enter to keep the current selection[+], or type selection number:

本教程中的步骤应该足以安装和运行任何可用的Java版本,取决于您的使用案例。

结论

在本教程中,您使用yum包管理器、alternatives命令和环境变量安装和管理了多个版本的Java,这些都是Linux环境管理的基本方面,Java 提供了非常好的工作例子,因为它有很多不同的版本。

接下来,你可能想学习 如何在其他环境中使用Java

Published At
Categories with 技术
comments powered by Disqus