2009年7月29日水曜日

Ubuntu の alternative システム

alternative システムは、
同じ機能をもつ複数のプログラムを一つのシステムにインストールして、 共存させることを可能とする仕組みだそうです。
(そんな仕組みがあって、知らず知らずのうちに使っていたとは…)

例えば、java というコマンドをたどっていくと、/etc/alternatives/java にシンボリックリンクが張られています。
さらにその先は、/usr/lib/jvm/java-6-sun/jre/bin/java にリンクが張られていたりします。

$ which java
/usr/bin/java

$ ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Jun 30 09:29 /usr/bin/java -> /etc/alternatives/java

複数の java のパッケージをインストールした場合、alternatives の設定を変更することで、
どの java コマンドを使うか明示的に切り替えることができます。
PATH の設定を変えても java が切り替わらない方は、この設定を確認すると良いと思います。

alternatives の設定を変更するには、update-alternatives コマンドを使います。
自分でシンボリックリンクを張り替えるよりは、このコマンド使った方が安全そうです。

java コマンドの実態を java-6-sun に切り替える場合は、以下のようにします (番号を選択)。

# update-alternatives --config java

There are 4 alternatives which provide `java'.

 Selection    Alternative
-----------------------------------------------
         1    /usr/bin/gij-4.2
 +        2    /usr/lib/jvm/java-gcj/jre/bin/java
         3    /usr/lib/jvm/java-1.5.0-sun/jre/bin/java
*         4    /usr/lib/jvm/java-6-sun/jre/bin/java

Press enter to keep the default[*], or type selection number: 4
Using '/usr/lib/jvm/java-6-sun/jre/bin/java' to provide 'java'.

参考:
http://manpages.ubuntu.com/manpages/hardy/ja/man8/update-alternatives.8.html

関連情報:
まさおのブログ (表): Ubuntu 複数インストールされている java を切り替え

0 件のコメント: