Ubuntu 上的 NodeJS 解释器名称( node
)已重命名为 nodejs
因为与另一个包的名称冲突。这是自述文件的内容。 Debian 说:
Node.js 解释器命令的上游名称是“node”。在 Debian 中,解释器命令已更改为“nodejs”。
这样做是为了防止命名空间冲突:其他命令在其上游使用相同的名称,例如“node”包中的 ax25-node。
必须将调用 Node.js 作为 shell 命令的脚本改为使用“nodejs”命令。
但是,使用 nodejs 会使用 npm
安装软件包。软件包安装失败并出现以下错误:
sh: 1: node: not found npm WARN This failure might be due to the use of legacy binary "node" npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian
如何让 npm 理解系统上已经安装了 nodejs 但解释器名称不同?
原文由 Sayem 发布,翻译遵循 CC BY-SA 4.0 许可协议
TL;博士:
首先让我澄清一下情况。 2012 年夏天,Debian 维护人员决定重命名 Node.js 可执行文件,以防止与另一个包发生某种命名空间冲突。对于 Debian 技术委员会来说,这是一个非常艰难的决定,因为它破坏了向后兼容性。
以下是发表在 Debian 邮件列表 中的委员会决议草案的引述:
第 2 段是 OP 问题的实际解决方案。 OP 应该尝试安装此软件包,而不是手动进行符号链接。这是 Debian 软件包索引 网站 中此软件包的链接。
它可以使用
sudo apt-get install nodejs-legacy
安装。我还没有找到任何关于 NPM 开发人员采用整个东西的信息,但我认为
npm
包将在某个时候得到修复,并且nodejs-legacy
成为真正的遗产。