#navi(../)
* 複数バージョンがインストールされているプログラムの切り替え・update-alternatives [#f69456ed]
複数バージョンのプログラムがインストールされている場合、どのバージョンを使用するようにするかの設定や現状使用中のバージョンなどを確認、設定するupdate-alternativesコマンドについて一部説明します。~
尚、UbuntuやCentOSなどで本コマンドを使用することができます。~
本資料はUbuntu12.04にて動作確認を行いました。
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* 関連資料 [#n78088e6]
-[[Ubuntuでcrontab編集時のデフォルトエディタの変更方法・select-editor>Ubuntu/Ubuntuでcrontab編集時のデフォルトエディタの変更方法・select-editor]]
* update-alternativesコマンドを使ってみる [#ic64948c]
以下のコマンドで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コマンドを使用すると、インストールされているバージョンの一覧や、切り替えを行うことができます。
** バージョンの一覧を表示してみる [#t1c883be]
今回、Rubyを2バージョンインストールしました。~
update-alternativesコマンドに--listオプションとアプリケーション名であるrubyをつけて確認してみます。
$ update-alternatives --list ruby
/usr/bin/ruby1.8
/usr/bin/ruby1.9.1
** インストールされたバージョンの情報を確認する [#w21fb321]
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' です。
** 使用するバージョンを対話式で切り替える [#nf878b47]
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コマンドの簡単な使用方法でした。
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)