如何在 Debian 11 上用 Apt 安装 Java

4,663 阅读7分钟

简介

许多类型的软件都需要Java和JVM(Java虚拟机),包括TomcatJettyGlassfishCassandraJenkins

在本指南中,你将使用apt ,安装不同版本的Java Runtime Environment(JRE)和Java Developer Kit(JDK)。你将安装OpenJDK以及Oracle的官方JDK。然后,你将选择你希望在你的项目中使用的版本。完成后,你就可以使用JDK开发软件或使用Java Runtime运行软件了。

先决条件

要学习本教程,你将需要。

  • 一台 Debian 11 服务器,并有一个非根用户,sudo-enabled 用户。

第1步 - 安装Java

安装Java有两个主要部分。JDK提供了用Java开发的基本软件工具,如编译器和调试器。JRE用于实际执行Java程序。此外,有两个主要的Java安装选项可供选择。OpenJDK是Java的开源实现,随Debian一起打包。Oracle JDK是Java的原始版本,由Java的开发者Oracle全面维护。

这两个版本都得到了甲骨文公司的官方认可。两者也都是由甲骨文公司开发的,但OpenJDK由于其开源性质,增加了社区贡献。然而,从Java 11开始,这两个选项现在在功能上是相同的,正如甲骨文所详述的那样。如何选择安装哪一个,要根据你的情况选择合适的许可。此外,OpenJDK还可以选择单独安装JRE,而OracleJDK则与JRE打包。

选项1:安装默认的JRE/JDK

安装Java的一个选择是使用Debian打包的版本。默认情况下,Debian 11 包含 OpenJDK 第 11 版,它是 JRE 和 JDK 的一个开源变体,与 Java 11 兼容。

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

要安装OpenJDK版本的Java,首先更新你的apt 包索引。

sudo apt update

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

java -version

如果当前没有安装Java,你会收到以下信息。

Output
-bash: java: command not found

执行以下命令,安装OpenJDK 11的默认JRE。

sudo apt install default-jre

该JRE将允许你运行几乎所有的Java软件。

用下面的方法验证安装。

java -version

将返回以下输出。

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

除了 JRE 之外,您可能还需要 JDK,以便编译和运行一些特定的基于 Java 的软件。要安装JDK,请执行下面的命令,它也将安装JRE。

sudo apt install default-jdk

通过检查javac ,即Java编译器的版本来验证JDK是否已经安装。

javac -version

你将收到以下输出。

Output
javac 11.0.16

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

选项 2 - 安装 Oracle JDK 11

Oracle的Java许可协议不允许通过软件包管理器自动安装。要安装官方的Oracle JDK,你必须创建一个Oracle账户,并手动下载JDK,为你想使用的版本添加一个新的包库。然后你可以使用apt第三方安装脚本的帮助下安装它。Oracle JDK包含了JRE,所以你不需要单独安装它。

你需要下载的Oracle JDK的版本必须与安装程序脚本的版本相匹配。要找到你需要的版本,请访问 oracle-java11-installer页面。你的软件包的位置在下图中。

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

在这个图片中,脚本的版本是11.0.13 。因此,你需要Oracle JDK 11.0.13。版本号可能会有所不同,这取决于你安装软件的时间。 你不需要从这个页面下载任何东西,因为你很快就会通过apt 下载安装脚本了。

接下来,访问Archive Downloads,找到与你需要的版本相匹配的版本。

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许可协议。选择复选框以接受许可协议,并按下下载按钮。你的下载将开始。在下载开始之前,你可能需要再登录一次你的Oracle账户。

文件下载完毕后,你需要把它传输到你的服务器上。在你的本地机器上,将文件上传到你的服务器。在macOS、Linux或使用Windows Subsystem for Linux的Windows系统上,使用scp 命令将文件传输到你的用户的主目录。 sammy用户的主目录。下面的命令假定你已经将Oracle JDK文件保存到本地机器的Downloads 文件夹。

scp Downloads/jdk-11.0.13_linux-x64_bin.tar.gz sammy@your_server_ip:~

一旦文件上传完成,返回到你的服务器,添加第三方资源库,这将有助于你安装Oracle的Java。

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

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

你会收到以下输出。

Output
gpg: keybox '/usr/share/keyrings/oracle-jdk11-installer.gpg' created
gpg: /tmp/trustdb.gpg: trustdb created
gpg: key EA8CACC073C3DB2A: public key "Launchpad PPA for Linux Uprising" imported
gpg: Total number processed: 1
gpg:           	imported: 1

接下来,将该软件库添加到你的软件包源列表中。

echo "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

更新你的软件包列表,使新软件可供安装。

sudo apt update

安装程序将寻找你在/var/cache/oracle-jdk11-installer-local 中下载的 Oracle JDK。首先创建这个目录。

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

然后,将 Oracle JDK 档案移到那里。

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

最后,安装该软件包。

sudo apt install oracle-java11-installer-local

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

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

第2步-管理Java

你可以在一台服务器上安装多个Java。你可以通过使用update-alternatives 命令,在命令行中配置哪个版本是默认使用的。

sudo update-alternatives --config java

如果你在本教程中安装了两个版本的Java,会有如下输出。

Output
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                         Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
* 2            /usr/lib/jvm/java-11-oracle/bin/java          1091      manual mode

Press <enter> to keep the current choice[*], or type selection number:

选择与Java版本相关的数字,将其作为默认版本,或按ENTER ,保留当前设置。

你可以对其他Java命令这样做,如编译器(javac)。

sudo update-alternatives --config javac

可以运行这个命令的其他命令包括,但不限于。keytool,javadoc, 和jarsigner

第3步 - 设置JAVA_HOME 环境变量

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

要设置这个环境变量,首先要确定Java的安装位置。使用update-alternatives 命令。

sudo update-alternatives --config java

该输出将列出每个Java的安装及其安装路径。

Output
Selection    Path                                         Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1111      manual mode
* 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

sudo nano /etc/environment

这个文件最初可能是空白的。在文件的末尾,添加以下一行,确保用你自己复制的路径替换突出显示的路径,而不包括路径的bin/ 部分。

/etc/environment

JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"

修改这个文件将为你系统中的所有用户设置JAVA_HOME 路径。

保存该文件并退出编辑器。如果你使用的是nano ,你可以按CTRL + XY ,然后按ENTER 来完成。

现在重新加载这个文件,将这些变化应用到你的当前会话中。

source /etc/environment

验证环境变量是否被设置。

echo $JAVA_HOME

你的输出将返回你先前设置的路径。

Output
/usr/lib/jvm/java-11-openjdk-amd64

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

总结

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