「JDK 1.6.x のインストール (CentOS 5.5 64bit)」の「3.3. /usr/bin 配下のリンク先変更」において、/usr/bin 配下の java のリンク先を切り替えることにより実行される java のバージョン切り替えを実現しました。
が、alternatives (または update-alternatives) コマンドを用いることで、よりスマートに java バージョンの切り替えが実現できるようです。
今回は JDK (java) に関連する部分のみの手順に限定させていただきますので、alternatives の詳細については以下のサイトをご参照ください。
@see 「コマンドを便利に切り替える update-alternatives 使いこなし講座」
1. 現在の設定確認
1.1. alternatives 設定
alternatives で java コマンドの設定状況を確認します。
2 プログラムがあり 'java' を提供します。
選択 コマンド
-----------------------------------------------
*+ 1 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
2 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java が有効となっていて、そのほかに /usr/lib/jvm/jre-1.4.2-gcj/bin/java が登録されていることがわかります。
1.2. java 設定
java コマンドを実行すると、CentOS のデフォルトでは /usr/bin 配下の java が起動します。この実体は、以下が示すように /etc/alternatives/java となっています。
lrwxrwxrwx 1 root root 22 4月 18 18:11 java -> /etc/alternatives/java
/ect/alternatives/java は「1.1. alternatives 設定」となっていますので、結果として /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java が動作することになります。
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.6) (rhel-1.11.b16.el5-x86_64)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)
2. インストールした JDK の登録
新たに JDK をインストールしても alternatives には登録されません。
登録を行う場合には --install オプションを使用します。
- 第1パラメータの「/usr/bin/java」は実行するリンクを指定します。
- 第2パラメータの「java」は登録対象のグループを指定します。
- 第3パラメータの「/usr/java/default/bin/java」は実際に実行するコマンドのパスを指定します。
細かくバージョン管理を行いたい場合は「/usr/java/jdk1.6.0_21/bin/java」のように登録した方がよいかもしれません。 - 第4パラメータの「16021」は優先度を指定します。今回は JDK1.6.0_21 ですので「16021」としました。
alternatives で登録結果を確認します。
3 プログラムがあり 'java' を提供します。
選択 コマンド
-----------------------------------------------
+ 1 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
2 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
* 3 /usr/java/default/bin/java
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:3
「/usr/java/default/bin/java」が追加されていることが確認できます。
ただ、このままでは「1」が有効となっているので、「3」を入力して Enter キーで決定します。
3. 動作確認
前項の設定が有効となっているか確認します。
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b06)
Java HotSpot(TM) 64-Bit Server VM (build 17.0-b16, mixed mode)