複数バージョンのプログラムがインストールされている場合、どのバージョンを使用するようにするかの設定や現状使用中のバージョンなどを確認、設定するupdate-alternativesコマンドについて一部説明します。
尚、UbuntuやCentOSなどで本コマンドを使用することができます。
本資料はUbuntu12.04にて動作確認を行いました。
以下のコマンドでUbuntu12.04にRuby1.8, Ruby1.9.1の2つのバージョンをインストールしました。
sudo apt-get install ruby1.8 ruby1.9.1
rubyのバージョンを端末から調べたところ、以下のように1.8系がデフォルトで使用されてるように設定されていました。
$ ruby --version ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]
update-alternativesコマンドを使用すると、インストールされているバージョンの一覧や、切り替えを行うことができます。
今回、Rubyを2バージョンインストールしました。
update-alternativesコマンドに--listオプションとアプリケーション名であるrubyをつけて確認してみます。
$ update-alternatives --list ruby /usr/bin/ruby1.8 /usr/bin/ruby1.9.1
update-alternativesコマンドに--displayオプションとアプリケーション名であるrubyをつけて確認してみます。
下記の出力を確認すると、rubyは自動モードでruby1.8が選択されていることがわかります。
$ update-alternatives --display ruby ruby - 自動モード リンクは現在 /usr/bin/ruby1.8 を指しています /usr/bin/ruby1.8 - 優先度 50 スレーブ erb: /usr/bin/erb1.8 スレーブ erb.1.gz: /usr/share/man/man1/erb1.8.1.gz スレーブ irb: /usr/bin/irb1.8 スレーブ irb.1.gz: /usr/share/man/man1/irb1.8.1.gz スレーブ rdoc: /usr/bin/rdoc1.8 スレーブ rdoc.1.gz: /usr/share/man/man1/rdoc1.8.1.gz スレーブ ri: /usr/bin/ri1.8 スレーブ ri.1.gz: /usr/share/man/man1/ri1.8.1.gz スレーブ ruby.1.gz: /usr/share/man/man1/ruby1.8.1.gz スレーブ testrb: /usr/bin/testrb1.8 スレーブ testrb.1.gz: /usr/share/man/man1/testrb1.8.1.gz /usr/bin/ruby1.9.1 - 優先度 10 スレーブ erb: /usr/bin/erb1.9.1 スレーブ erb.1.gz: /usr/share/man/man1/erb1.9.1.1.gz スレーブ irb: /usr/bin/irb1.9.1 スレーブ irb.1.gz: /usr/share/man/man1/irb1.9.1.1.gz スレーブ rdoc: /usr/bin/rdoc1.9.1 スレーブ rdoc.1.gz: /usr/share/man/man1/rdoc1.9.1.1.gz スレーブ ri: /usr/bin/ri1.9.1 スレーブ ri.1.gz: /usr/share/man/man1/ri1.9.1.1.gz スレーブ ruby.1.gz: /usr/share/man/man1/ruby1.9.1.1.gz スレーブ testrb: /usr/bin/testrb1.9.1 スレーブ testrb.1.gz: /usr/share/man/man1/testrb1.9.1.1.gz 現在の '最適' バージョンは '/usr/bin/ruby1.8' です。
update-alternativesコマンドに--configオプションとアプリケーション名であるrubyをつけて確認してみます。
下記の出力を見ると優先順位値が大きいruby1.8が選択されていることが確認できます。
切り替えるときは選択肢の番号を入力してEnterキーを押します。
$ sudo update-alternatives --config ruby alternative ruby (/usr/bin/ruby を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ * 0 /usr/bin/ruby1.8 50 自動モード 1 /usr/bin/ruby1.8 50 手動モード 2 /usr/bin/ruby1.9.1 10 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください:
以下の出力は実際にruby1.9.1(選択肢2)を選んだ時の出力です。
現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 2 update-alternatives: /usr/bin/ruby (ruby) を提供するために 手動モード で /usr/bin/ruby1.9.1 を使います。 $ ruby -v ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux] $ sudo update-alternatives --config ruby alternative ruby (/usr/bin/ruby を提供) には 2 個の選択肢があります。 選択肢 パス 優先度 状態 ------------------------------------------------------------ 0 /usr/bin/ruby1.8 50 自動モード 1 /usr/bin/ruby1.8 50 手動モード * 2 /usr/bin/ruby1.9.1 10 手動モード 現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください:
以上、update-alternativesコマンドの簡単な使用方法でした。