
update-alternatives
優先順位システムがどのように機能するかを文書から理解できません。
Nodejsアプリケーションが何よりもハムラジオ番組を指すよう/usr/bin/node
にしたいとしましょう。私は言わなければならない:nodejs
node
update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100 --slave /usr/share/man/...
2つの異なるプログラムがあるとしましょう/usr/bin/node
。最初はNodejs、2番目はアマチュアラジオです。どのようなものを使用するかをどのように決定しますか?
この過程で優先順位はどのような役割を果たしますか?
追加された:npm
nodejsパッケージマネージャはnodejsコマンドを呼び出す必要があるので、node
nodejsを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.deb
node
/usr/sbin/ax25-node
/usr/sbin/node
/usr/bin/nodejs
答え2
いつでも/usr/bin/node
1つのオプションしかありません。代替メカニズムは選択手段です。
両方がインストールされている場合、優先順位によってどちらがデフォルト値であるかが制御されます。彼らはどういうわけか両方を持ち、他のプログラムがこのプログラムと呼ばれているので、どちらかを選択する方法を提供しません。
プログラムが名前で互いを呼び出すと、検索パスに指定された名前のプログラムが1つしかない場合があります。node
プログラムでコマンドを明確に区別する必要があります。Debian フォロー、nodejs
Node.jsおよびax25-node
HAMプログラム用。変更が本当に迷惑な場合は、この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