このエントリーをはてなブックマークに追加


複数バージョンがインストールされているプログラムの切り替え・update-alternatives

複数バージョンのプログラムがインストールされている場合、どのバージョンを使用するようにするかの設定や現状使用中のバージョンなどを確認、設定するupdate-alternativesコマンドについて一部説明します。
尚、UbuntuやCentOSなどで本コマンドを使用することができます。
本資料はUbuntu12.04にて動作確認を行いました。


関連資料

update-alternativesコマンドを使ってみる

以下のコマンドで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コマンドの簡単な使用方法でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:27:10