🍩前置き
あるツールをインストールして PATH
に通そうとしたとき、「そういや update-alternatives
っていう仕組みあったな……」と思い出して調べ直したときの備忘録。
update-alternatives
とは
Debian Alternatives システムを構成するシンボリックリンクを生成・削除・管理するツール。
Debian Alternatives システムについて
たとえば
-
vi
とnano
のように機能が被っている複数のアプリ -
異なる複数のバージョンをインストールしているアプリ
のようなアプリがある場合、そのうちのどれを優先的にデフォルトとして利用するかを決める必要がでてくる。
その方法としてはシンボリックリンクを利用するのが一般的。
ただし、そのシンボリックリンクの管理を全部人力でやろうとすると手間がかかるしミスしやすい。
そこでシステムがシンボリックリンクの作成や管理を行うことで上記の問題点を解消させるため、 Debian Alternatives システムが導入されている。
リンクグループ 関連の強いシンボリックリンクをひとまとめにグループ化したもの(たとえば editor )。グループとして変更を行えると便利なことが多い、らしい。 だいたい /etc/alternatives 配下のシンボリックリンクのことを指す、はず。
|
直接リンクせず /etc/alternatives を経由する理由
FHS にしたがって管理者による変更を /etc ディレクトリだけに限定するのが目的らしい。
|
🦮使い方
Args | Desc |
---|---|
<link> |
ユーザー実行用のシンボリックリンクのパス。 |
<name> |
リンクグループ名かつ |
<path> |
実際に実行されるアプリ本体のパス。 |
<priority> |
優先度の数値。数値が大きいほど優先度も高い。 |
作成・追加
- update-alternatives --install <link> <name> <path> <priority>
-
リンクグループを新規作成してアプリを登録する。
もしくは既存のリンクグループにアプリを追加登録する。vi コマンドで nano を起動するように設定、優先度は低くするupdate-alternatives --install /usr/bin/vi vi /bin/nano 10
削除
- update-alternatives --remove <name> <path>
-
リンクグループから登録しているアプリを削除する。
vi リンクグループから nano コマンドを削除update-alternatives --remove vi /bin/nano
- update-alternatives --remove-all <name>
-
リンクグループごとまとめて削除する。
vi リンクグループを削除update-alternatives --remove-all vi
編集
- update-alternatives --config <name>
-
指定したリンクグループにおいて、デフォルトで使うアプリを選択する選択画面を表示する。
editor リンクグループのデフォルト動作を手動選択update-alternatives --config editor There are 2 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/nano 40 manual mode 2 /usr/bin/vim.basic 30 manual mode Press <enter> to keep the current choice[*], or type selection number:
情報表示
- update-alternatives --get-selections
-
リンクグループのシンボリックリンク名(master alternative name)とそのステータスを一覧表示する。
登録しているリンクグループの一覧update-alternatives --get-selections arptables auto /usr/sbin/arptables-nft awk auto /usr/bin/mawk builtins.7.gz auto /usr/share/man/man7/bash-builtins.7.gz ebtables auto /usr/sbin/ebtables-nft editor auto /bin/nano ...
- update-alternatives --list <name>
-
指定したリンクグループに登録されているアプリを一覧表示する。
editor リンクグループの登録アプリ一覧update-alternatives --list editor /bin/nano /usr/bin/vim.basic
- update-alternatives --display <name>
-
指定したリンクグループについての情報を表示する。
editor リンクグループの情報表示update-alternatives --display editor editor - auto mode link best version is /bin/nano link currently points to /bin/nano link editor is /usr/bin/editor slave editor.1.gz is /usr/share/man/man1/editor.1.gz ...