update-alternatives へ自分で登録する

Facebooktwittergoogle_plustumblrmail

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:
Facebooktwittergoogle_plustumblrmail
Yusuke Dada K.
Yusuke Dada K.
台湾の現地企業で主に組み込みソフトウエアの研究開発をしている日本人です。我人是個日本人,負責軟體的研究開發。在臺灣的科技公司工作。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です