update-alternatives コマンドの使い方

update-alternatives コマンドの利用方法を扱います。

現在の設定を確認する方法、切り替える方法を扱います。

登録と削除に関しては実際には次節で扱います。

IV.28.3.1. オプション

--help や --version というオプションを使うとバージョン情報とヘルプメッセージを表示します。

$ /sbin/update-alternatives --help

--verbose というオプションを使うと、メッセージが詳細に表示される場合があります。

--verbose は、他のオプションと合わせて利用します。

IV.28.3.2. 選択候補を確認する

選択候補を表示するには --list というオプションを用います。

$ /sbin/update-alternatives --list 総称名

これは変更するのではなく表示するだけなので一般ユーザーで実行できます。

$ /sbin/update-alternatives --list gcc
/usr/bin/gcc-3.3.6
/usr/bin/gcc-2.95.3
/usr/bin/gcc-4.0.2

総称名 gcc に対して選択候補が 3つあることがわかります。

IV.28.3.3. 現在の設定を確認する

現在の設定を確認するには --display というオプションを用います。

$ /sbin/update-alternatives --display 総称名

これも一般ユーザーで実行できます。

$ /sbin/update-alternatives --display gcc
1  gcc - status is auto.
2   link currently points to /usr/bin/gcc-3.3.6
3  /usr/bin/gcc-3.3.6 - priority 30
4   slave c99: /usr/bin/c99-3.3.6
5   slave cc: /usr/bin/gcc-3.3.6
6   slave i386-vine-linux-gcc: /usr/bin/i386-vine-linux-gcc-3.3.6
7   slave c89: /usr/bin/c89-3.3.6
8  /usr/bin/gcc-2.95.3 - priority 15
9   slave cc: /usr/bin/gcc-2.95.3
10 /usr/bin/gcc-4.0.2 - priority 20
11  slave c99: /usr/bin/c99-4.0.2
12  slave cc: /usr/bin/gcc-4.0.2
13  slave i386-vine-linux-gcc: /usr/bin/i386-vine-linux-gcc-4.0.2
14  slave c89: /usr/bin/c89-4.0.2
15 Current `best' version is /usr/bin/gcc-3.3.6.

説明のために左端に行番号をつけています。

1行目に総称名 gcc があり、mode の表示があります。status is auto. となっているので、優先度の一番高いものを自動的に選択するという状態です。

2行目に link currently points to /usr/bin/gcc-3.3.6 とあり、gcc-3.3.6 が選択されていることがわかります。

manual モードで、選択候補が無いという場合には、 link currently absent となります。

3,8,10行に優先度(priority)があり、gcc-3.3.6 が 30 , gcc-2.95.3 が 15 , gcc-4.0.2 が 20 となっていることがわかります。

また、一番下の15行目に Current `best' version is /usr/bin/gcc-3.3.6. とあり、ここでも、優先度が一番高いのは gcc-3.3.6 であるということがわかります。

4〜7,9,11〜14行の slave で指定されているものは、スレーブリンクです。(参照 セクション IV.28.2.3 - リンクグループ(マスターリンクとスレーブリンク))

その上の 3,8,10行にある /usr/bin/gcc-3.3.6 , /usr/bin/gcc-2.95.3 , /usr/bin/gcc-4.0.2 が マスターリンク です。

マスターリンクである /usr/bin/gcc-4.0.2 を選択すると、スレーブリンクである c99,cc,i386-vine-linux-gcc,c89 も選択されたことになり、まとめて切り替えることができます。

IV.28.3.4. 設定を切り替える

ここから先の操作は スーパーユーザ(root) で行う必要があります。

優先度が高いものを自動的に利用する、というのではなく選択するには、--config や --all や --set というオプションを用います。

優先度に従い自動的に切り替えるように戻すには、--auto というオプションを用います。

rpmパッケージのインストール時に設定された alternatives は、パッケージのアンインストール時に manual( mode) から auto(matic mode) に切り替える処理が行われる場合がありますが、自分で alternatives として登録した場合などは、ファイルが削除されたりしてもモードの切り替えは行われないので、必要に応じて auto に戻したり、どれかを選択したりしてください。

IV.28.3.4.1. 対話的に切り替える

対話的に設定するには、--config というオプションを用います。

# /sbin/update-alternatives --config 総称名

/usr/bin/gcc-3.3.6 ではなく /usr/bin/gcc-4.0.2 を利用するようにしてみます。

# /sbin/update-alternatives --config gcc
There are 3 alternatives which provide `gcc'.

  Selection    Alternative
-----------------------------------------------
*+    1        /usr/bin/gcc-3.3.6
      2        /usr/bin/gcc-2.95.3
      3        /usr/bin/gcc-4.0.2

Press enter to keep the default[*], or type selection number: 

と表示されます。

* と書かれているものが現在選択されているものです。そのまま利用するのであれば Enter と入力します。この場合には モード は変更されません。

3 /usr/bin/gcc-4.0.2 とあるので、3 Enter と入力します。

Using `/usr/bin/gcc-4.0.2' to provide `gcc'.

と表示されて設定変更が完了しました。

$ /sbin/update-alternatives --display gcc
gcc - status is manual.
 link currently points to /usr/bin/gcc-4.0.2
/usr/bin/gcc-3.3.6 - priority 30
 slave c99: /usr/bin/c99-3.3.6
 slave cc: /usr/bin/gcc-3.3.6
 slave i386-vine-linux-gcc: /usr/bin/i386-vine-linux-gcc-3.3.6
 slave c89: /usr/bin/c89-3.3.6
/usr/bin/gcc-2.95.3 - priority 15
 slave cc: /usr/bin/gcc-2.95.3
/usr/bin/gcc-4.0.2 - priority 20
 slave c99: /usr/bin/c99-4.0.2
 slave cc: /usr/bin/gcc-4.0.2
 slave i386-vine-linux-gcc: /usr/bin/i386-vine-linux-gcc-4.0.2
 slave c89: /usr/bin/c89-4.0.2
Current `best' version is /usr/bin/gcc-3.3.6.

自分で選択したので一行目が status is manual となりました。

二行目で link currently points to /usr/bin/gcc-4.0.2 となっていることが確認できます。

IV.28.3.4.2. 全ての総称名について対話的に切り替える

--all とすると、すべての 総称名 について順に --config で設定できます。

# /sbin/update-alternatives --all

Enter だけ入力していけば、何も変更せずに終了できるので、どんな 総称名 と選択候補 があるのか確認することもできます。

IV.28.3.4.3. 直接指定して切り替える

対話的に決定するのではなく、直接指定するには --set というオプションを用います。

# /sbin/update-alternatives --set 総称名 選択候補
# /sbin/update-alternatives --set gcc /usr/bin/gcc-4.0.2
Using `/usr/bin/gcc-4.0.2' to provide `gcc'.

と表示され /usr/bin/gcc-4.0.2 が選択されたことがわかります。

IV.28.3.4.4. automatic modeに戻す

manual( mode) から auto(matic mode) に戻すには --auto というオプションを用います。

# /sbin/update-alternatives --auto 総称名
# /sbin/update-alternatives --auto gcc

特に何も表示されません。

--verbose オプションを使うと次のように表示されます。

# /sbin/update-alternatives --verbose --auto gcc
Setting up automatic selection of gcc.
Checking available versions of gcc, updating links in /etc/alternatives ...
(You may modify the symlinks there yourself if desired - see `man ln'.)
Updating gcc (/usr/bin/gcc) to point to /usr/bin/gcc-3.3.6.
Updating c99 (/usr/bin/c99) to point to /usr/bin/c99-3.3.6.
Updating cc (/usr/bin/cc) to point to /usr/bin/gcc-3.3.6.
Updating i386-vine-linux-gcc (/usr/bin/i386-vine-linux-gcc) to point to /usr/bin/i386-vine-linux-gcc-3.3.6.
Updating c89 (/usr/bin/c89) to point to /usr/bin/c89-3.3.6.