月別アーカイブ: 2010年8月

alternatives コマンドを使用した java バージョンの切り替え

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 コマンドの設定状況を確認します。

# alternatives --config 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 となっています。

# ls -l /usr/bin/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
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 オプションを使用します。

# alternatives --install /usr/bin/java java /usr/java/default/bin/java 16021
  • 第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 で登録結果を確認します。

# alternatives --config java

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
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)

[ END ]