由于与其他包名称冲突,Ubuntu上的NodeJS解释器名称(node)被重命名为NodeJS。这是自述。Debian说:

node .js解释器命令的上游名称是“node”。 在Debian中,解释器命令已更改为"nodejs"。 这样做是为了防止名称空间冲突:使用其他命令 在其上游相同的名称,如ax25-node中的“node” 包中。 作为shell命令调用Node.js的脚本必须改为 使用“nodejs”命令。

然而,使用nodejs会搞砸使用npm安装包的过程。软件包安装失败,报错如下:

Sh: 1: node: not found 此失败可能是由于使用了遗留的二进制"node" 更多解释请阅读/usr/share/doc/nodejs/ readmeDebian

我如何让npm理解nodejs已经安装在系统上,但解释器名称不同?


当前回答

正如其他人已经提到的,我建议不要使用“sudo apt-get”来安装node或任何开发库。您可以从https://nodejs.org/dist/v6.9.2/下载所需的版本并设置自己的环境。

我会推荐像nvm和n这样的工具来管理你的节点版本。切换和使用这些模块非常方便。 https://github.com/creationix/nvm https://github.com/tj/n

或者写基本bash下载zip/tar,解压移动文件夹并创建软链接。当你需要更新时,只需将旧的软链接指向新的下载版本。 就像我为自己创建的一样,你可以参考: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh

#Go to home
cd ~
#run command
#New Script
wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh 
bash nodejs-installer.sh -v lts
#here -v or --version can be sepecific to 0.10.37 or it could be latest/lts 
#Examples
bash nodejs-installer.sh -v lts
bash nodejs-installer.sh -v latest
bash nodejs-installer.sh -v 4.4.2

其他回答

在Linux Mint 17上,我尝试了两种解决方案(创建符号链接或使用nodejs-legacy包)都没有成功。

唯一对我有用的是使用Chris Lea的ppa:

sudo apt-get purge node-*
sudo apt-get autoremove 
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

此安装的节点版本为10.37和npm 1.4.28。在那之后,我可以在全球范围内安装包。

TL; diana:

sudo apt-get install nodejs-legacy

首先让我澄清一下情况。2012年夏天,Debian维护者决定重命名Node.js可执行文件,以防止与另一个包发生某种名称空间冲突。对于Debian技术委员会来说,这是一个非常艰难的决定,因为它打破了向后兼容性。

以下摘自委员会决议草案,发表在Debian邮件列表中:

The nodejs package shall be changed to provide /usr/bin/nodejs, not /usr/bin/node. The package should declare a Breaks: relationship with any packages in Debian that reference /usr/bin/node. The nodejs source package shall also provide a nodejs-legacy binary package at Priority: extra that contains /usr/bin/node as a symlink to /usr/bin/nodejs. No package in the archive may depend on or recommend the nodejs-legacy package, which is provided solely for upstream compatibility. This package declares shall also declare a Conflicts: relationship with the node package. <...>

第2段是OP问题的实际解决方案。OP应该尝试安装这个包,而不是手动进行符号链接。这里是Debian包索引网站上这个包的链接。

可以使用sudo apt-get install nodejs-legacy进行安装。

我还没有发现任何关于NPM开发者采用整个东西的信息,但我认为NPM包会在某个点上被固定,nodejs-legacy会成为真正的遗产。

这是您的节点没有正确安装,首先您需要卸载节点,然后重新安装。 要安装节点,这可能会对您有所帮助 http://array151.com/blog/nodejs-tutorial-and-set-up/

之后,您可以轻松地安装包。为了安装软件包,这可能会帮助你

http://array151.com/blog/npm-node-package-manager/

我修复了它解除链接/usr/sbin/node(链接到ax25-node包),然后我在命令行上使用这个创建了一个链接到nodejs

sudo ln -s /usr/bin/nodejs /usr/bin/node

因为像karma这样的包不能与nodejs名称一起工作,但是将karma脚本的第一行从node更改为nodejs,但我更喜欢一次性解决这个问题

node -v  // first check it's install or not
npm -v
sudo apt install npm
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash –
sudo apt-get install nodejs

然后检查

node -v or node –version
npm -v or npm –version

或者你可以去掉包装。锁定json文件/ node_modules然后运行NPM I

我希望它能正常工作

步骤:https://www.geeksforgeeks.org/installation-of-node-js-on-linux/