Debian 代替システム: 同じ名前と優先順位を持つプログラム

Debian 代替システム: 同じ名前と優先順位を持つプログラム

update-alternatives優先順位システムがどのように機能するかを文書から理解できません。

Nodejsアプリケーションが何よりもハムラジオ番組を指すよう/usr/bin/nodeにしたいとしましょう。私は言わなければならない:nodejsnode

update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100 --slave /usr/share/man/...

2つの異なるプログラムがあるとしましょう/usr/bin/node。最初はNodejs、2番目はアマチュアラジオです。どのようなものを使用するかをどのように決定しますか?

この過程で優先順位はどのような役割を果たしますか?

追加された:npmnodejsパッケージマネージャはnodejsコマンドを呼び出す必要があるので、nodenodejsをnode

答え1

ここで交換システムがすることを誤解しているようです。同様のタイプの代替プログラムを使用する簡単な方法を提供するために使用されます。マニュアルページの一般的な例は、エディタを使用することです。

たとえば、テキストエディタed(1)とnvi(1)の両方がシステムにインストールされている場合、代替システムでは、一般名/usr/bin/editorが/usr/bin/nviにデフォルト値に設定されます。

あなたの場合は、node完全に異なる2つのアプリケーションを表します。

どちらもメイン Debian リポジトリからインストールできる場合は、パッケージマネージャの 1 つが他のパッケージと競合しないように実行可能ファイルの名前を指定した可能性があります。たとえば、Node.js/usr/bin/node_radioと競合しないようにラジオアプリケーションバイナリの名前を変更できます。/usr/bin/node

一方、アマチュアラジオを直接コンパイルする場合は、同じnode名前のバイナリが生成されないようにコンパイルを変更するか、別のパスにインストールされていることを確認する必要があります。コマンドプロンプトでコマンドを入力したときに実行されるコマンドは、変数の検索順序によって異なります/usr/local/bin/node。もしnode$PATH間違った1つを実行した後にそれを実行するには、フルパスを入力する必要があります/usr/local/bin/node

とにかくupdate-alternativesここでは役に立ちません。

上記のすべては、アマチュアラジオが実行可能ファイルとしてインストールされたことを示すリンクが続くクイックapt-get download nodeチェックのような例にすぎません。 Node.jsがインストールされているため、両方が競合しません。dpkg --contents node_0.3.2-7.4_all.debnode/usr/sbin/ax25-node/usr/sbin/node/usr/bin/nodejs

答え2

いつでも/usr/bin/node1つのオプションしかありません。代替メカニズムは選択手段です。

両方がインストールされている場合、優先順位によってどちらがデフォルト値であるかが制御されます。彼らはどういうわけか両方を持ち、他のプログラムがこのプログラムと呼ばれているので、どちらかを選択する方法を提供しません。

プログラムが名前で互いを呼び出すと、検索パスに指定された名前のプログラムが1つしかない場合があります。nodeプログラムでコマンドを明確に区別する必要があります。Debian フォローnodejsNode.jsおよびax25-nodeHAMプログラム用。変更が本当に迷惑な場合は、このnodeパッケージ(/usr/bin/nodeエイリアス生成用ax25-node)またはこのnodejs-legacyパッケージ(/usr/bin/nodeエイリアス生成用nodejs)をインストールしてください。

nodeたくさん呼び出して簡単に変更できないプログラムがある場合は、別のPATH変数を使用して実行してください。 1つはシンボリックリンクを含むディレクトリを含み、ax25-nodeもう1つはシンボリックリンクを含むディレクトリを含みますnodejs

mkdir -p /usr/local/etc/nodejs/bin /usr/local/etc/ax25/bin
ln -s ../../../../bin/nodejs /usr/local/etc/nodejs/bin/node
ln -s ../../../../bin/ax25-node /usr/local/etc/ax25/bin/node

PATH=/usr/local/etc/ax25/bin:$PATH program-using-ax25
PATH=/usr/local/etc/node/bin:$PATH program-using-nodejs

関連情報