UPDATE-ALTERNATIVES(8)

名前
update-alternatives - シンボリックリンクを管理してデフォルトのコマンドを決定する

書式
update-alternatives [options] --install link name path priority [--slave link name path]...

update-alternatives [options] --remove name path

update-alternatives [options] --remove-all name

update-alternatives [options] --all

update-alternatives [options] --auto name

update-alternatives [options] --display name

update-alternatives [options] --list name

update-alternatives [options] --config name

update-alternatives [options] --set name path

説明
update-alternatives は Debian の alternatives システムを成すシンボリックリンクを 生成・削除・管理したり、リンクの情報を表示したりする。

同じ機能を (あるいは似たような機能を) 持つ複数のプログラムを 一つのシステムにインストールし、共存させることができる。 例えば多くのシステムでは、複数のテキストエディタを共存させている。 これにより、システムのユーザは好みに応じて別々のエディタを 使うことができるようになる。 しかしプログラムにとっては、 特に指定がなかったときにどのエディタを起動すれば良いのかという、 なかなか難しい問題を抱えることになる。

Debian の alternatives システムは、この問題を解決するためのものである。 同じ機能を提供し、互いに置き換え可能な全てのファイルは、 ファイルシステム中の「一般名 (generic name)」を共有する。 その一般名が実際にどのファイルを参照するかは、 alternatives システムとシステム管理者とが決定する。 例えば、テキストエディタである ed(1) と nvi(1) の両方がシステムにインストールされていたとすると、 一般名である /usr/bin/editor は、デフォルトでは /usr/bin/nvi を参照する。システム管理者はこれを上書きし、 /usr/bin/ed を参照させるようにすることもできる。こうすると、 その後明示的なリクエストがなければ、 alternatives システムはその設定を変更しない。

一般名は、選ばれた「選択肢 (alternative)」への直接のシンボリックリンクではなく、 alternatives ディレクトリにある名前へのシンボリックリンクになっている。 そしてその名前が実際に参照されるファイルへのシンボリックリンクになっている。 こうなっている理由は、システム管理者の変更が /etc ディレクトリ以下で行われるようにするためである。 なぜこうするのが良いかについては FHS に説明がある。

置き換え可能な一群のファイル中のどれかを含むパッケージが インストール・変更・削除されると、 update-alternatives が呼ばれ、そのファイルに対する alternatives システムの内部情報を更新する。 update-alternatives は、通常 Debian パッケージの postinst または prerm スクリプトから呼び出される。

複数の選択肢を同期させ、グループとして変更すると便利なことが多い。 例えば vi(1) エディタのいろいろな派生システムが同時にインストールされていたとすると、 /usr/share/man/man1/vi.1 が参照する man ページは、 /usr/bin/vi が参照する実行ファイルに対応しているべきであろう。 update-alternatives は、 master リンクと slave リンクによってこれを取り扱う。 master が変更されると、それに関連づけされた各 slave も同時に変更される。 master リンクとそれに関連づけされた slave とは、 リンクグループ を形成する。

各リンクグループは、いかなる時点においても、 automatic または manual の 2 つのモードのいずれかにある。 グループが automatic モードにある場合は、 パッケージのインストール・削除の際に リンクを更新するかどうか/どのように更新するかは、 alternatives システムが自動的に決定する。 manual モードでは、 alternatives システムはリンクを変更しない。 システム管理者が行った決定がずっと保存される。

リンクグループは、システムに導入されると、まず automatic モードになる。 システム管理者がその設定を変更すると、次に update-alternatives がリンクグループに対して実行されたときに変更が認識され、 そのリンクグループは自動的に manual モードに切り換わる。

各選択肢は priority 属性を持っている。リンクグループが automatic モードにあるときは、 priority のもっとも高いものが、 そのグループのメンバーが参照する選択肢になる。

--config オプションを用いると、 update-alternatives は与えられた master リンクのリンクグループに対応する選択肢をすべてリストする。 そしてそのリンクグループにどれを対応させるかを問い合わせる プロンプトが表示される。 ここで変更を行うと、その一般名は auto モードではなくなる。 automatic 状態に戻すには、 --auto オプションを用いる必要がある。

非対話的に設定をしたい場合は --set オプションを代わりに使用する(以下を参照)。

用語
update-alternatives の動作は極めて複雑なので、ここでいくつか特殊な用語を説明し、 動作の理解の助けとしたい。

一般名 (generic name)
    /usr/bin/editor のような名前。 alternatives システムによって 同様の機能を持つ複数のファイルのどれかひとつを参照する。

symlink
    特に他に指定がなければ、これは alternatives ディレクトリ内の シンボリックリンクを意味する。システム管理者が調整の対象とするものである。

選択肢 (alternative)
    ファイルシステム中の特定のファイル。 alternatives システムによって、 一般名からアクセスされるようにできる。

alternatives ディレクトリ
    symlink を保持するディレクトリ。デフォルトは /etc/alternatives。

administrative ディレクトリ
    update-alternatives の状態情報を保持するディレクトリ。デフォルトは /var/lib/dpkg/alternatives。

リンクグループ
    関連する symlink のセット。グループごと更新するためのもの。

master リンク
    リンクグループに属するリンクで、 グループの他のリンクの設定を決定するもの。

slave リンク
    リンクグループに属するリンクで、 master リンクの設定によって制御されるもの。

automatic モード
    リンクグループが automatic モードにあるときは、 そのグループに対応しており、 かつもっとも高い priority を持つ選択肢をグループ内の各リンクが参照する。 この調整は alternatives システムが自動的に行う。

manual モード
    リンクグループが manual モードにあるときは、 alternatives システムはシステム管理者の設定を一切変更しない。

例
例えば nvi や vim のように、テキストエディタ vi と互換性のあるプログラムを提供するパッケージが複数ある。 どのパッケージが使われるかは、リンクグループ vi によって制御される。リンクグループ vi にはプログラム自身のリンクと、関連する man ページのリンクが含まれる。

vi を提供するパッケージとその現在の設定を表示するには、 --display アクションを使う。

    update-alternatives --display vi

特定の vi 実装を選ぶには、root としてこのコマンドを実行し、そして一覧から数字を選ぶ。

    update-alternatives --config vi

vi 実装の選択を自動的に行なうように戻すには、root としてこのコマンドを実行する。

    update-alternatives --auto vi

オプション
update-alternatives に何らかの意味のある仕事をさせるには、 アクションを 1 つだけ指定しなければならない。 共通オプションは、どのアクションともいっしょに、いくつでも指定してかまわない。

  共通オプション

--verbose
    update-alternatives が行っている作業に付いて、より詳細なコメントを生成する。

--quiet
    エラー以外のコメントを出さない。 このオプションはまだ実装されていない。

--test
    実際の作業は何もせず、行う予定の作業について表示する。 このオプションはまだ実装されていない。

--help
    利用法に関する表示を行う (update-alternatives のバージョンも表示する)。

--version
    update-alternatives のバージョンを表示する(利用法に関する表示も行う)。

--altdir directory
    alternatives ディレクトリをデフォルトから変えたいときに指定する。

--admindir directory
    administrative ディレクトリをデフォルトから変えたいときに指定する。

  アクション

--install link gen path pri [--slave slink sgen spath] ...
    選択肢のグループをシステムに追加する。 gen は master リンクの一般名・ link はその symlink の名前・ path はここで導入される、 master リンクに対応した選択肢、である。 sgen, slink, spath はそれぞれ slave リンクの一般名・symlink・選択肢である。 --slave オプションと、それに続く 3 つの引数のセットは、 0 個以上いくつでも指定してよい。

    指定した master の symlink が既に alternatives システムの記録に存在していると、 与えられた情報はそのグループに対する 新たな選択肢のセットとして追加される。 グループが automatic モードにあり、 新たに追加された選択肢の priority がそのグループに対して インストールされている他の選択肢のものより高いときには、 symlink は新たに追加された選択肢を参照するように更新される。

--set name path
    プログラム path を name の選択肢として設定する。 --config と同等だが、こちらは非対話的であるため、スクリプト向けである。

--remove name path
    (master の) 選択肢とそれに関連する全ての slave リンクを削除する。 name は alternatives ディレクトリ中の名前であり、 path は name のリンク先に指定できる、絶対パスでのファイル名である。 name が実際に path にリンクされている場合には、 name は他の適切な選択肢を参照するよう更新される。 あるいはそのような選択肢が残っていなければ削除される。 関連する slave リンクも対応して更新 (削除) される。 name が現在その path を参照していなければ、リンクの変更は行われない。 その選択肢の情報が削除されるだけである。

--remove-all name
    すべての選択肢と、それに関連するすべての slave リンクを削除する。 name は、alternative ディレクトリの名前である。

--all
    --config をすべての選択肢について呼び出す。

--auto link
    master の symlink link を automatic モードに変更する。 この処理を行う際には、 この master リンクと対応する各 slave は、 現在インストールされている alterantive のうち、 もっとも priority の高いものを参照するように更新される。

--display link
    link を master リンクとするリンクグループの情報を表示する。 表示される情報は、グループのモード (auto か manual か)・ その symlink の現在の参照先・ 他に alternatives (とそれに対応した slave altarnative) があるかどうか・ 現在インストールされている選択肢のうち、 もっとも priority の高いもの、である。

--list link
    リンクグループのすべてのターゲットを表示する。

--config link
    リンクグループの利用可能なすべての選択肢を表示し、対話的に選択肢の 1 つを選べるようにする。リンクグループは更新され、 auto モードではなくなる。

ファイル

/etc/alternatives/
    デフォルトの alternatives ディレクトリ。 --altdir オプションによって変更できる。

/var/lib/dpkg/alternatives/
    デフォルトの administration ディレクトリ。 --admindir オプションによって変更できる。

終了ステータス

0   リクエストされたアクションが正しく実行された。

2   コマンドラインの解釈を行うときか、 アクションを実行するときに問題が起った。

診断メッセージ
update-alternatives は、動作の最中に、いま何をやっているかを逐一標準出力にしゃべり続ける。 問題が起きると、 update-alternatives はエラーメッセージを標準エラー出力に出力し、 終了ステータス 2 を返す。 これらの診断メッセージは、読めばわかるはずである。 もしわからなければ、バグとして報告して欲しい。

バグ
バグを見つけたら、 Debian のバグ追跡システムを使ってレポートして欲しい。 それ無理なら、著者に直接電子メールで送って欲しい。

もし update-alternatives の動作とこのマニュアルページの記述に矛盾があれば、 実装か文書、どちらかのバグである。レポートをお願いしたい。

著者
Debian update-alternatives is copyright 1995 Ian Jackson. It is free software; see the GNU General Public Licence version 2 or later for copying conditions. There is NO warranty.

This manual page is copyright 1997/98 Charles Briscoe-Smith. This is free documentation; see the GNU General Public Licence version 2 or later for copying conditions. There is NO WARRANTY.

You can find the GNU GPL in /usr/share/common-licenses/GPL on any Debian system.

関連項目
ln(1), FHS, the Filesystem Hierarchy Standard.

翻訳者
中野武雄 <nakano@apm.seikei.ac.jp>

翻訳者注
このマニュアルページは dpkg パッケージに付属の update-alternatives(8) の日本語訳である。 翻訳対象は CVS revision が 1.8.2.2 のものである。