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

介绍

本教程将向您展示如何在当前版本的基于RPM的Linux发行版上安装Java:Red Hat Enterprise Linux、CentOS、Fedora和Rocky Linux。Java是一种流行的编程语言和软件平台,可以让您运行许多服务器端应用程序。

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

先决条件

在开始本指南之前,您应该在服务器上配置一个常规的非root用户,并具有sudo特权 – 这是您应该登录服务器的用户。您可以按照我们的Rocky Linux 8的初始服务器设置指南中的步骤来学习如何配置常规用户帐户。

步骤1 – 安装OpenJDK

Java 平台有三种不同的版本:标准版(SE)、企业版(EE)和微型版(ME)。本教程专注于 Java SE(Java 平台标准版)。几乎所有开源 Java 软件都设计为与 Java SE 一起运行。

可以安装两种不同的 Java SE 软件包:Java Runtime Environment(JRE)和Java Development Kit(JDK)。JRE 是 Java 虚拟机(JVM)的实现,允许您运行已编译的 Java 应用程序和小程序。JDK 包括 JRE 以及编写、开发和编译 Java 应用程序和小程序所需的其他软件。

Java 还有两种不同的实现:OpenJDK 和 Oracle Java。这两种实现在很大程度上基于相同的代码,但 OpenJDK 是 Java 的参考实现,完全开源,而 Oracle Java 包含一些专有代码。大多数 Java 应用程序都可以在任何一种实现上正常工作,但您应该根据软件调用的实现来选择使用哪种。

您可以在单个系统上安装各种版本和发布版本的 Java,但大多数人只需要一个安装。因此,请尽量只安装您需要运行或开发应用程序的 Java 版本。

本节将向您展示如何使用 yum 软件包管理器安装预构建的 OpenJDK JRE 和 JDK 软件包。yum 是使用 RPM 软件包的发行版的默认软件包管理器。

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

  1. sudo yum install java

默认情况下,尝试安装java而不指定版本将解析为OpenJDK JRE的最常见稳定版本。正如您从此输出中所见,截至撰写本文时,该版本为java-1.8.0-openjdk:

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

Java还将提供多个依赖项。在确认提示时,输入y然后按回车键继续安装。您可能还需要确认接受来自您正在安装的仓库的签名密钥:

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

再次输入y,然后按回车键。

现在,您应该已经拥有一个可工作的Java安装。为了确认这一点,您可以运行java -version,以检查您环境中现有的Java版本:

  1. java -version

注意:大多数情况下,命令行参数前面都有一个短横线用于单个字母参数,或者两个短横线用于完整单词参数。Java遵循一种不同的约定,对于所有参数都使用一个短横线,例如-version

Output
openjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

Java命名约定和Linux软件包命名约定之间的交互可能有些令人困惑。在本教程的前面,我们澄清了用于开发的完整JDK环境和用于运行Java应用程序的JRE环境之间的区别。虽然OpenJDK是Java的开源发行版的名称,但您实际上只安装了OpenJDK JRE。为了安装完整的OpenJDK JDK,您应该安装相应的包,并在其名称后附加-devel。这是其他编程环境的开发包的常见约定,Java也遵循这一约定,尽管术语在这里有些尴尬地重叠。

与之前一样,您可以安装java-devel以获取默认版本,或者指定java-1.8.0-openjdk-devel

  1. sudo yum install java-devel
Output
DigitalOcean Droplet Agent 63 kB/s | 3.3 kB 00:00 Dependencies resolved. ======================================================================================== Package Arch Version Repository Size ======================================================================================== Installing: java-1.8.0-openjdk-devel x86_64 1:1.8.0.322.b06-2.el8_5 appstream 9.8 M Transaction Summary ======================================================================================== Install 1 Package Total download size: 9.8 M Installed size: 41 M Is this ok [y/N]:

安装此软件包后,您将拥有一个完整的OpenJDK环境,可以编译和运行任何没有特定版本不兼容性的Java软件。在下一部分中,您将安装和管理其他版本的Java。

步骤2 – 安装其他OpenJDK版本

最近,OpenJDK改变了其版本编号方案,以更紧密地跟踪Oracle Java发布。为了安装较新版本的OpenJDK,您可以在包名称中指定版本号,就像1.8.0一样。例如,要安装OpenJDK 17,您可以执行yum install java-17-openjdk

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

与以前一样,您可以通过在包名称后附加-devel来安装完整的JDK环境。然而,在此之后,运行java程序仍将默认使用您之前安装的OpenJDK 1.8.0版本,您可以通过再次运行java -version进行确认:

  1. java -version
Output
openjdk version "1.8.0_322" OpenJDK Runtime Environment (build 1.8.0_322-b06) OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

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

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

如果您安装了多个版本的Java,您可能希望将其中一个设置为默认版本(即当用户运行java命令时将运行的版本)。此外,一些应用程序需要设置某些环境变量以定位要使用的Java安装。

管理默认命令的符号链接的alternatives命令可用于选择默认的Java版本。要列出可以由alternatives管理的可用Java版本,请使用alternatives --config java

  1. sudo alternatives --config java

输出应列出您安装的两个Java版本:

output
There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- *+ 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) 2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java) Enter to keep the current selection[+], or type selection number:

输入一个选择数字以选择默认使用的java可执行文件。 它将重新排列您系统上的必要符号链接,以确保java命令指向正确的库集。 您可以根据需要重新运行此命令,java -version的输出应相应更改:

  1. java -version
Output
openjdk version "17.0.2" 2022-01-18 LTS OpenJDK Runtime Environment 21.9 (build 17.0.2+8-LTS) OpenJDK 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),您可以在bash shell或脚本中设置JAVA_HOME环境变量,如下所示:

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

注意: JAVA_HOME环境变量更喜欢您将Java安装路径设置为以/jre目录结尾。 此约定可以从一个变量变为另一个变量,因此在进行更改时最好仔细检查示例。

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

  1. sudo 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 发行版中,因此为了跟随操作,您需要通过运行以下命令来安装它:

  1. sudo yum install wget

在安装 Oracle Java 之前,您必须接受 Java SE 的 Oracle 二进制代码许可协议,这是其中的一个步骤。

注意:为了安装 Oracle Java,您需要转到 Oracle Java 下载页面,接受许可协议,并复制适用于 Linux x86 的 .rpm 软件包的下载链接。将复制的下载链接替换为 wget 命令中突出显示的部分。

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

  1. cd ~
  2. wget --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(如果您下载了不同的版本,请在此处替换文件名):

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

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

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

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

现在,您可以重新运行alternatives命令,您应该会看到第三个选项以使用Oracle Java:

  1. sudo alternatives --config java
output
There are 3 programs which provide 'java'. Selection Command ----------------------------------------------- 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) + 2 java-17-openjdk.x86_64 (/usr/lib/jvm/java-17-openjdk-17.0.2.0.8-4.el8_5.x86_64/bin/java) * 3 /usr/java/jdk-17.0.2/bin/java Enter to keep the current selection[+], or type selection number:

本教程中的步骤应足以安装和运行根据您的用途而提供的任何可用版本的Java。

结论

在本教程中,您使用yum包管理器、alternatives命令和环境变量安装和管理了多个版本的Java。这些都是Linux环境管理的基本方面,Java因其众多的不同版本而提供了一个特别好的工作示例。

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

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-java-on-centos-and-fedora