Debian 替代系统:具有相同名称和优先级的程序

Bor*_*kov 3 debian alternatives

我无法从update-alternatives文档中理解优先级系统是如何工作的。

假设我想在其他情况下/usr/bin/node指向nodejsnodejs 应用程序和业余无线电节目,称为node。我不得不说:

update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100 --slave /usr/share/man/...
Run Code Online (Sandbox Code Playgroud)

假设我有 2 个期望/usr/bin/node不同的程序,第一个 - nodejs,第二个 - 业余无线电。他们将如何确定使用哪一个?

优先级在此过程中的作用是什么?

添加:请注意,npmnodejs 包管理器需要调用 nodejs 命令node,因此我必须将 nodejs 安装为node.

gar*_*Red 8

我认为您误解了替代系统在这里的作用。它用于提供一种使用类似类型的替代程序的简单方法。通常的例子,手册页中使用的例子是一个编辑器:

例如,如果文本编辑器 ed(1) 和 nvi(1) 都安装在系统上,则替代系统将导致通用名称 /usr/bin/editor 在默认情况下引用 /usr/bin/nvi。

在您的情况下,node指的是两个完全不同的应用程序。

如果两者都可以从主 Debian 存储库安装,那么包维护者之一可能会命名他们的可执行文件,以便它不会与另一个发生冲突。例如,无线电应用程序的二进制文件可以重命名为,/usr/bin/node_radio这样它就不会与 Node.js 冲突/usr/bin/node

另一方面,如果您node自己编译业余无线电,则必须确保您要么更改编译内容,使其不会创建同名二进制文件,要么确保将其安装到不同的路径中,例如/usr/local/bin/node. 如果您选择后者,则node在命令提示符下键入时执行的操作取决于$PATH变量中的搜索顺序。如果执行错误,则必须输入完整路径才能运行它:/usr/local/bin/node.

无论如何update-alternatives在这里对你没有帮助。

以上只是一个例子,作为快速检查的例子,apt-get download node然后dpkg --contents node_0.3.2-7.4_all.deb显示业余无线电node安装为/usr/sbin/ax25-node/usr/sbin/node可执行文件的链接。Node.js 安装/usr/bin/nodejs因此两者永远不会发生冲突。