Overview
便利な deb パッケージだと、予め Alternatives を設定してくれていて、 異なるバージョンのソフトを apt-get install した後に update-alternatives --config app_name とすれば、デフォルトをどちらの版にするか選択する事ができる。 でも、中には (gcc の様に) そうはなっていないものもある。
ここでは、自分で独自の Alternatives を設定する方法を説明する。
First Step
apt-get でインストールするツールの中には、バージョン番号を付帯するものも多く存在する。 例えば gcc は、Ubuntu 12.10 での標準版は 4.7.2 だが、同時に 4.6 、 4.5 、 4.4 も 依然として提供されている。こんな感じにインストールできる。
$ sudo apt-get insltall gcc gcc-4.4
この場合、標準の 4.7.2 の物がデフォルト gcc としてシンボリックリンクされる。 一方、 gcc-4.4 の方は単独で存在するのみ。
$ ls -l /usr/bin | grep "gcc" | grep "4.7"
-rwxr-xr-x 1 root root 527596 Sep 22 01:39 gcc-4.7
lrwxrwxrwx 1 root root 7 Nov 5 07:36 gcc -> gcc-4.7
lrwxrwxrwx 1 root root 7 Nov 5 07:36 i686-linux-gnu-gcc -> gcc-4.7
$ ls -l /usr/bin | grep "gcc" | grep "4.4"
-rwxr-xr-x 1 root root 220480 Aug 21 02:36 gcc-4.4
lrwxrwxrwx 1 root root 7 Aug 21 02:36 i686-linux-gnu-gcc-4.4 -> gcc-4.4
ここで確認すべきは、
- 選択したいソフトの版
- ソフトの版ごとの、それぞれの名称
- ソフトの、デフォルト名称
gcc の例では以下の様になる。
- 選択したいソフトの版 : gcc 4.7 と gcc 4.4
-
それぞれの名称 : gcc-4.7 、 gcc-4.4
- デフォルト名称 : gcc
Install Alternatives
独自の Alternatives を設定するには、 update-alternatives コマンドを オプション --install で使えば良い。
update-alternatives --install link name path priority
-
link : ソフトのデフォルト名称。これは実際には、シンボリックリンク名になる。
-
name : Alternatives 名称。 update_alternatives --config する時に与える。
-
path : Alternatives へ登録する、ソフトの実体へのパス。
-
priority : Alternatives リスト中の優先順位。数字が大きい程、優先順位が高い。
gcc を登録する時はこんな風に。
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 44
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 47
Change Alternatives
実際に Alternatives を選択するには、 update-alternatives コマンドを オプション --config で使えば良い。
update-alternatives --config name
-
name : Alternatives 名称。
gcc の Alternatives を選択するにはこんな風に。 * 印が付いているエントリが現在選択中のもの。 Selection 欄にある数字を入力して、選択を切り替えれば良い。
$ sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gcc-4.7 47 auto mode
1 /usr/bin/gcc-4.4 44 manual mode
2 /usr/bin/gcc-4.7 47 manual mode
Press enter to keep the current choice[*], or type selection number: