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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS