在部署 Kafka、Spring Boot、各类 Java 服务时,JDK 是最基础的运行环境。很多人在 Debian 服务器上执行 apt install openjdk-21-jdk 时,会遇到“找不到软件包”的问题,尤其是在 Debian 12 环境中更常见。本文将介绍如何在 Debian 系统 上,通过 清华大学 TUNA 镜像源 安装 Eclipse Temurin JDK 21,并完成环境变量配置、版本验证以及常见问题排查。
一、为什么推荐使用 Temurin JDK 21
Eclipse Adoptium 官方提供了 Temurin 的 Linux 安装仓库,并给出了 Debian/Ubuntu 的标准安装方式;官方包命名规则就是 temurin-<version>-jdk,例如 temurin-21-jdk。清华大学镜像站也提供了 Adoptium 的 Debian 镜像,并给出了 Debian/Ubuntu 的配置示例,因此在国内服务器环境中,这种方式通常比直接访问官方仓库更稳定。
如果你后续是为了部署 Kafka,那么选用 JDK 21 也是合适的。Apache Kafka 官方文档当前明确指出:Java 17、Java 21、Java 25 均为完整支持版本。
二、适用环境
本文适用于以下环境:
- Debian 12 / Debian 13
- 需要安装 JDK 21 的服务器
- 希望通过清华大学镜像源提升下载稳定性
- 用于部署 Kafka、Java Web 服务、微服务应用等场景
如果你使用的是 Debian 12,需要注意:Debian 官方仓库的常规包搜索结果显示,bookworm 主要提供 OpenJDK 17;而 OpenJDK 21 则在 trixie 中可直接找到。正因如此,Debian 12 上更推荐通过 Adoptium 仓库安装 Temurin 21。
三、安装前准备
先确认当前系统版本,避免把仓库写错:
cat /etc/os-release
uname -m
如果输出中包含:
VERSION_CODENAME=bookworm,说明你是 Debian 12VERSION_CODENAME=trixie,说明你是 Debian 13
清华大学的 Adoptium 帮助页给出了 Debian/Ubuntu 的镜像仓库写法,其中 Debian 12 的示例就是 bookworm。
四、使用清华大学源安装 JDK 21
1. 更新系统并安装依赖
先安装基础工具:
apt update
apt install -y wget apt-transport-https gpg ca-certificates
Adoptium 官方 Debian/Ubuntu 安装说明中要求先安装 wget、apt-transport-https 和 gpg。清华大学镜像帮助页也给出了类似步骤。
2. 导入 Adoptium GPG 公钥
执行以下命令:
mkdir -p /usr/share/keyrings
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public \
| gpg --dearmor -o /usr/share/keyrings/adoptium.gpg
Adoptium 官方 Debian 安装方法要求先下载其 GPG key;清华大学镜像帮助页同样要求先信任 Adoptium 的公钥,然后再配置镜像仓库。
3. 写入清华大学 Adoptium 镜像源
执行:
CODENAME="$(awk -F= '/^VERSION_CODENAME/{print $2}' /etc/os-release)"
cat > /etc/apt/sources.list.d/adoptium.list <<EOF
deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://mirrors.tuna.tsinghua.edu.cn/Adoptium/deb ${CODENAME} main
EOF
清华大学镜像帮助页给出的 Debian/Ubuntu 仓库格式是:
deb [signed-by=/etc/apt/keyrings/adoptium.asc] https://mirrors.tuna.tsinghua.edu.cn/Adoptium/deb bookworm main
本文这里采用的是同样的镜像地址,但把密钥保存为 gpg keyring 文件,更适合生产环境管理。仓库地址和发行版代号的用法与清华镜像帮助保持一致。
4. 更新索引并安装 JDK 21
执行:
apt update
apt install -y temurin-21-jdk
Adoptium 官方说明里,Temurin 的包名规则为 temurin-<version>-jdk;因此安装 JDK 21 时,对应的包名就是 temurin-21-jdk。虽然清华镜像帮助页示例使用的是 temurin-17-jdk,但那只是示例版本,不影响 21 版本的安装方式。
5. 验证安装结果
安装完成后,执行:
java -version
javac -version
apt-cache policy temurin-21-jdk
readlink -f "$(command -v java)"
如果安装成功,通常可以看到 Java 21 的版本信息,以及当前 java 命令所指向的实际路径。Adoptium 官方文档也建议通过 java -version 进行安装验证。
五、一键安装命令
如果你想直接复制一整段执行,可以使用下面这套命令:
apt update && \
apt install -y wget apt-transport-https gpg ca-certificates && \
mkdir -p /usr/share/keyrings && \
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor -o /usr/share/keyrings/adoptium.gpg && \
CODENAME="$(awk -F= '/^VERSION_CODENAME/{print $2}' /etc/os-release)" && \
echo "deb [signed-by=/usr/share/keyrings/adoptium.gpg] https://mirrors.tuna.tsinghua.edu.cn/Adoptium/deb ${CODENAME} main" > /etc/apt/sources.list.d/adoptium.list && \
apt update && \
apt install -y temurin-21-jdk && \
java -version && javac -version
这套流程基于 Adoptium 官方 Debian 安装方式,并将仓库地址替换为清华大学 TUNA 镜像地址。
六、配置 JAVA_HOME 环境变量
很多 Java 程序虽然只要 java 命令可用就能运行,但在生产环境中,仍然建议显式配置 JAVA_HOME,这样在部署 Kafka、Tomcat、Spring Boot、Jenkins Agent 等服务时更稳妥。
1. 获取 Java 安装目录
JAVA_BIN="$(readlink -f "$(command -v java)")"
JAVA_HOME="$(dirname "$(dirname "$JAVA_BIN")")"
echo "$JAVA_BIN"
echo "$JAVA_HOME"
2. 写入系统环境变量
cat > /etc/profile.d/java.sh <<EOF
export JAVA_HOME=$JAVA_HOME
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
chmod 644 /etc/profile.d/java.sh
source /etc/profile.d/java.sh
3. 再次验证
echo "$JAVA_HOME"
java -version
javac -version
七、常见问题排查
1. 提示 Unable to locate package temurin-21-jdk
这种情况通常有几个原因:
- 没有执行
apt update - 仓库文件写错了
VERSION_CODENAME获取错误- 公钥没有导入成功
排查命令:
cat /etc/apt/sources.list.d/adoptium.list
apt update
apt-cache search temurin
apt-cache policy temurin-21-jdk
2. 提示 GPG 签名错误
可以重新导入公钥:
rm -f /usr/share/keyrings/adoptium.gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public \
| gpg --dearmor -o /usr/share/keyrings/adoptium.gpg
apt update
3. java -version 显示的不是 21
说明系统中可能已经安装过其他 Java 版本。可以检查当前 Java 路径:
which java
readlink -f "$(which java)"
如果系统启用了 alternatives,也可以检查:
update-alternatives --list java || true
update-alternatives --list javac || true
4. 为什么不用 SDKMAN 作为生产安装方案
SDKMAN 更适合开发机、多版本切换、测试环境。对于正式生产服务器,使用系统级 APT 仓库安装通常更稳定,也更便于后续维护和自动化管理。Adoptium 官方也推荐通过包管理器安装 Temurin。
八、卸载 JDK 21 的方法
如果后续需要卸载,可以执行:
apt remove -y temurin-21-jdk
apt autoremove -y
rm -f /etc/apt/sources.list.d/adoptium.list
rm -f /usr/share/keyrings/adoptium.gpg
apt update








暂无评论内容