如何在 Debian 11 上用 Apt 安装 Java

介绍

Java 和 JVM (Java 虚拟机) 需要用于许多类型的软件,包括 Tomcat, Jetty, Glassfish, CassandraJenkins

在本指南中,您将使用apt安装不同的版本的Java Runtime Environment(JRE)和Java Developer Kit(JDK)。您将安装OpenJDK以及来自Oracle的官方JDK。

前提条件

要遵循本教程,您将需要:

第1步:安装Java

安装Java有两个主要组件。JDK提供了在Java中开发的必备软件工具,如编译器和调试器。JRE被用来实际执行Java程序。此外,有两个主要的Java安装选项可供选择。OpenJDK是Java的开源实现,并附带Debian。Oracle JDK是Java的原始版本,由Java的开发者Oracle完全维护。

这两种版本都是由Oracle正式认可的,两者都是由Oracle开发的,但OpenJDK由于其开源性质而增加了社区贡献,然而,从Java 11开始,两种选项现在在功能上是相同的(正如Oracle详细描述的那样)(https://blogs.oracle.com/java/post/oracle-jdk-releases-for-java-11-and-later)。安装之间的选择取决于为您的情况选择合适的许可证。此外,OpenJDK有选择单独安装JRE,而OracleJDK则配有JRE。

选项 1 — 安装默认 JRE/JDK

安装 Java 的一个选项是使用与 Debian 包装的版本. 默认情况下,Debian 11 包含 OpenJDK 版本 11,这是 JRE 和 JDK 的开源变体,并且与 Java 11 兼容。

Java 11是Java的长期支持版本。

要安装Java的OpenJDK版本,先更新您的apt包索引:

1sudo apt update

接下来,检查是否已经安装了Java:

1java -version

如果 Java 尚未安装,您将收到以下消息:

1[secondary_label Output]
2-bash: java: command not found

运行以下命令来从 OpenJDK 11 安装默认 JRE:

1sudo apt install default-jre

JRE将允许您运行几乎所有Java软件。

检查安装如下:

1java -version

以下输出将返回:

1[secondary_label Output]
2openjdk version "11.0.16" 2022-07-19
3OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1)
4OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1deb11u1, mixed mode, sharing)

除了 JRE 之外,您可能还需要 JDK 来编译和运行某些特定的基于 Java 的软件. 要安装 JDK,请执行以下命令,该命令还会安装 JRE:

1sudo apt install default-jdk

通过检查 Java 编译器「javac」的版本来验证 JDK 是否已安装:

1javac -version

您将收到以下输出:

1[secondary_label Output]
2javac 11.0.16

接下来,您将学习如何安装Oracle的官方JDK和JRE。

选项 2 — 安装 Oracle JDK 11

Oracle 的 Java 许可协议不允许通过包管理器进行自动安装. 要安装官方 Oracle JDK,您必须 创建 Oracle 帐户并手动下载 JDK 以添加您想要使用的版本的新包库。

您需要下载的 Oracle JDK 版本必须匹配安装程序脚本的版本. 要找到您需要的版本,请访问 oracle-java11-installer页面。

The Oracle Java installer web page listing all the currently available packages

因此,您需要 Oracle JDK 11.0.13. 版本号可能因您安装软件时而有所不同. 您不需要从此页面下载任何东西,因为您将很快通过 apt下载安装脚本。

接下来,访问 档案下载并找到匹配您需要的版本的版本。

The Oracle Java archive downloads web page where you can find versions of Java that are not the latest release.

从此列表中,选择 Linux x64 压缩档案 .tar.gz 包:

The Oracle Java 11.0.13 download webpage. Selected is the Linux x64 Compressed Archive file.

您将看到一个屏幕,要求您接受 Oracle 许可协议。 选择验证框来接受许可协议,然后按下 Download 按钮。 您的下载将开始。

一旦下载了该文件,您将需要将其传输到您的服务器上。在本地计算机上,将该文件上传到您的服务器上。在 macOS、Linux 或 Windows 上使用 Windows 子系统 for Linux,使用scp命令将该文件传输到您的sammy用户的主目录。下列命令假定您已将 Oracle JDK 文件保存到本地计算机的下载文件夹:

1[environment local]
2scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz sammy@your_server_ip:~

完成文件上传后,返回您的服务器并添加第三方存储库,以帮助您安装Oracle的Java。

首先,导入用于验证你要安装的软件的签名密钥:

1sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/oracle-jdk11-installer.gpg --keyserver keyserver.ubuntu.com --recv-keys EA8CACC073C3DB2A

您将收到以下输出:

1[secondary_label Output]
2gpg: keybox '/usr/share/keyrings/oracle-jdk11-installer.gpg' created
3gpg: /tmp/trustdb.gpg: trustdb created
4gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
5gpg: Total number processed: 1
6gpg:           	imported: 1

接下来,将存储库添加到您的包源列表:

1echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-jdk11-installer.gpg] https://ppa.launchpadcontent.net/linuxuprising/java/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/oracle-jdk11-installer.list > /dev/null

更新您的包列表以使新软件可供安装:

1sudo apt update

安装程序会搜索您下载的 Oracle JDK 在 /var/cache/oracle-jdk11-installer-local 中。

1sudo mkdir -p /var/cache/oracle-jdk11-installer-local/

然后将 Oracle JDK 档案移动到那里:

1sudo cp jdk-11.0.13_linux-x64_bin.tar.gz /var/cache/oracle-jdk11-installer-local/

最后,安装该包:

1sudo apt install oracle-java11-installer-local

安装程序将首先要求您接受 Oracle 许可协议. 接受协议,然后安装程序将提取 Java 包并安装它。

现在,您将学习如何选择您想要使用的Java版本。

第2步:管理Java

您可以在一个服务器上进行多个Java安装,您可以使用update-alternatives命令来配置在命令行中使用的默认版本:

1sudo update-alternatives --config java

如果您在本教程中安装了两个版本的Java,这是以下输出:

 1[secondary_label Output]
 2There are 2 choices for the alternative java (providing /usr/bin/java).
 3
 4  Selection Path Priority Status
 5------------------------------------------------------------
 6  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
 7  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
 8* 2            /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode
 9
10Press <enter> to keep the current choice[*], or type selection number:

选择与 Java 版本相关的号码以作为默认使用,或按ENTER,留下当前设置。

对于其他Java命令,例如编译器(‘javac’)可以这样做:

1sudo update-alternatives --config javac

可以执行此命令的其他命令包括但不限于:‘keytool’,‘javadoc’和‘jarsigner’.

步骤 3 — 设置JAVA_HOME环境变量

许多用Java编写的程序使用JAVA_HOME环境变量来确定哪个Java安装位置。

要设置此环境变量,请先确定 Java 安装在何处。

1sudo update-alternatives --config java

此输出将列出每个Java安装以及其安装路径:

1[secondary_label Output]
2  Selection Path Priority Status
3------------------------------------------------------------
4  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 auto mode
5  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1111 manual mode
6* 2            /usr/lib/jvm/java-11-oracle/bin/java 1091 manual mode

在这种情况下,安装路径如下:

  • Oracle Java 11 位於 /usr/lib/jvm/java-11-oracle/bin/java.
  • OpenJDK 11 位於 /usr/lib/jvm/java-11-openjdk-amd64/bin/java.

这些路径显示了通往java可执行的路径。

接下来,复制您偏好的安装路径,不包括后续的bin/java组件,然后使用nano或您偏好的文本编辑器打开/etc/environment:

1sudo nano /etc/environment

此檔案可能最初是空的. 在檔案的結尾,添加下列行,確保用你自己的複製的路徑取代突出的路徑,而不包括路徑的「bin/」部分:

1[label /etc/environment]
2JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

修改此文件将为您的系统上的所有用户设置JAVA_HOME路径。

保存文件并退出编辑器. 如果您使用nano,您可以通过按CTRL + X,Y,然后ENTER来完成此操作。

现在重新加载此文件以将更改应用到当前会话中:

1source /etc/environment

检查环境变量是否已设置:

1echo $JAVA_HOME

您的输出将返回您之前设置的路径:

1[secondary_label Output]
2/usr/lib/jvm/java-11-openjdk-amd64

其他用户需要执行命令 source /etc/environment 或退出并重新登录以应用此设置。

结论

在本教程中,您安装了多个版本的Java,并学会了如何管理它们,现在您可以安装运行在Java上的软件,如Tomcat,Jetty,Glassfish,Cassandra或Jenkins。

Published At
Categories with 技术
comments powered by Disqus