1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Debian11でOpenJDKをインストールしようとした話。

1
Posted at

Debian 11で E: Unable to locate package openjdk-21-jdk が出た時の確実な対処法

はじめに

MendixアプリケーションのオンプレミスサーバーにJava 21を入れようとして、以下エラーが出たことはないか。

$ sudo apt install openjdk-21-jdk
E: Unable to locate package openjdk-21-jdk

「aptで入らないなら他の方法は?」と調べると、Ubuntu向けPPAの情報ばかりヒットして大変だった、忘れないよう備忘録としてまとめる。
この記事では temurin-21-jdkを使う方法ではなくjdk.java.net から OpenJDK のtarballを直接ダウンロードして手動インストールする方法 を解説します。


直面したエラー

Debian 11 (Bullseye) の環境でJava 21のインストールを試みると、以下のエラーが発生します。

$ sudo apt install openjdk-21-jdk
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package openjdk-21-jdk

openjdk-17-jdk は問題なくインストールできるのに、21だけが見つからない状況。


根本原因:Debian 11の標準リポジトリはJava 17止まり

Debianの各バージョンが標準でサポートするJavaのバージョンは以下のとおり。

Debianバージョン コードネーム サポートするOpenJDK
Debian 10 Buster Java 11, 13
Debian 11 Bullseye Java 11, 17
Debian 12 Bookworm Java 17, 21

つまり Debian 11の標準リポジトリにはJava 21が存在しません。

apt search openjdk で確認すると openjdk-17-jdk は存在するが openjdk-21-jdk はリストに出てきません。

$ apt search openjdk 2>/dev/null | grep openjdk
openjdk-11-jdk/stable 11.0.xx ...
openjdk-17-jdk/stable 17.0.xx ...
# openjdk-21-jdk は存在しない

解決策:jdk.java.net から直接ダウンロードして手動インストールする

aptで入らない場合は、jdk.java.net/archive/ からOpenJDKのtarballを wget で直接ダウンロードして展開する方法が確実だ。
このサイトはOpenJDKのリファレンス実装を配布しており、GPLライセンスで自由に利用可能だ。

ステップ 1:wget でtarballをダウンロードする

cd /tmp

wget https://download.java.net/java/GA/jdk21/fd2272bbf8e04c3dbaee13770090416c/35/GPL/openjdk-21_linux-x64_bin.tar.gz

ダウンロードURLの探し方
https://jdk.java.net/archive/ にアクセスし、
目的のバージョン(例:Java 21)の「Linux / x64」行にある .tar.gz のリンクURLをコピーして使用することができる。

ダウンロードが完了したら、正しく取得できているか確認する。

ls -lh /tmp/openjdk-21_linux-x64_bin.tar.gz
# -rw-r--r-- 1 user user 189M ...  ← 100MB超あれば正常

ステップ 2:展開先ディレクトリを作成して展開する

# インストール先として /opt/java を使用とする(慣習的な配置場所)
sudo mkdir -p /opt/java

# tarballを展開
sudo tar -xzf /tmp/openjdk-21_linux-x64_bin.tar.gz -C /opt/java/

# 展開結果を確認
ls /opt/java/
# jdk-21  ← このディレクトリが作成される

ステップ 3:シンボリックリンクを作成する

将来バージョンが上がったときも、シンボリックリンクを張り替えるだけでパスを変えずに済む。

sudo ln -s /opt/java/jdk-21 /opt/java/java21

# 確認
ls -la /opt/java/
# lrwxrwxrwx java21 -> jdk-21

ステップ 4:環境変数 JAVA_HOME とPATHを設定する

sudo vi /etc/environment

以下の内容を追加・編集する。

JAVA_HOME="/opt/java/java21"
PATH="/opt/java/java21/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

設定を反映を行う。

source /etc/environment

ステップ 5:インストールの確認

$ java -version
openjdk version "21" 2023-09-19
OpenJDK Runtime Environment (build 21+35-2513)
OpenJDK 64-Bit Server VM (build 21+35-2513, mixed mode, sharing)

$ echo $JAVA_HOME
/opt/java/java21

まとめ

ポイント 内容
原因 Debian 11の標準リポジトリにはJava 21が含まれない
ダウンロード元 jdk.java.net/archive/(GPLライセンスのOpenJDKリファレンス実装)
手順 wget でtarballを取得 → /opt/java/ 以下に展開
環境変数 JAVA_HOMEPATH/etc/environment に設定する

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?