我无法从update-alternatives文档中了解优先级系统是如何工作的。
假设我希望/usr/bin/node为nodejs应用程序指向nodejs,在其他情况下指向一个名为node的业余无线电节目。我不得不说:
update-alternatives --install /usr/bin/node nodejs /usr/bin/nodejs 100 --slave /usr/share/man/...假设我有两个节目,期望/usr/bin/node是不同的东西,第一- nodejs,第二业余无线电。他们将如何确定使用哪一种?
在这个过程中,优先级的作用是什么?
另外:请注意,npm,nodejs包管理器,期望nodejs命令被称为node,因此我必须将nodejs安装为node。
发布于 2015-09-13 13:15:33
我想你误解了替代系统的作用。它用于提供一种简单的方法来使用类似类型的替代程序。通常的示例以及手册页中使用的示例是一个编辑器:
例如,如果系统上安装了文本编辑器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,因此两者永远不会冲突。
https://unix.stackexchange.com/questions/229373
复制相似问题