Posted at

update-alternativesに管理してもらうコマンドを追加する。

More than 5 years have passed since last update.

便利なアイツです。

ネットで軽くググッた範囲だとどうも要領を得ないので

私でも分かるように メモしておきます。


基本

update-alternativesに管理してもらうコマンドを追加するには、 --install オプションを使用します。

構文は次のとおりです。

sudo update-alternatives --install リンクのパス config名 コマンドの実パス 優先度


リンクのパス

update-alternativesが参照先を切り替えてくれるリンクのパス。

例えばJavaの場合、よく JAVA_HOME=/usr/bin/java のようにリンクに対して環境変数を設定しますが、

この/usr/bin/javaに当たる「実行する時に見るリンクのパス」です。


config名

update-alternatives --config NAME を実行するときのNAMEの部分です。


コマンドの実パス

--configによって切り替えられた時の実際のパスです。


優先度

alternativeの優先度を数値で指定します。

javaなど既存のalternativeを参考にしつつ、適当に設定してOKと思われます。


実践

私がこれを調べたのは、aptitudeでインストールされ(てい)るAntが1.8.xなのに対して

最新版は1.9.2で、これをいい感じに切り替えられるようにしたいという動機でした。

このAntを具体例として、その方法を示します。

ついでにAntのインストールも。

sudo mkdir /opt/ant

cd /opt/ant
sudo curl -O http://ftp.tsukuba.wide.ad.jp/software/apache//ant/binaries/apache-ant-1.9.2-bin.tar.gz
sudo tar -xzf apache-ant-1.9.2-bin.tar.gz

将来的にAntの別バージョンが増えるケースを考慮し、

/usr/local/binにバイナリを入れるのではなく、/opt以下にant用サブディレクトリを作成しています。

(FHSでは/usr/local以下にアプリ用の個別サブディレクトリを作ることを推奨していません)

ちなみに、aptitudeで入っているAntは/usr/share/antにあります。

これら2つのAntを update-alternatives の切り替え対象に追加します。

まずは先ほどインストールしたAnt1.9を追加してみます。

sudo update-alternatives --install /usr/local/bin/ant ant /opt/ant/apache-ant-1.9.2/bin/ant 10

もとからあったaptitudeのAntも追加しておきます。

sudo update-alternatives --install /usr/local/bin/ant ant /usr/share/ant/bin/ant 11

これで、 update-alternatives --config ant とすると切り替えられるようになります。

alternative ant (/usr/local/bin/ant を提供) には 2 個の選択肢があります。

選択肢 パス 優先度 状態
------------------------------------------------------------
0 /usr/share/ant/bin/ant 11 自動モード
* 1 /opt/ant/apache-ant-1.9.2/bin/ant 10 手動モード
2 /usr/share/ant/bin/ant 11 手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください:

以上