无法在Ubuntu中使用节点软件包管理器安装软件包

由于与另一个软件包的名称冲突,nodeUbuntu上的NodeJS解释器名称()已重命名为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,但解释器名称不同?

前端路易2020/03/16 22:15:59

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

之后,您可以轻松安装软件包。要安装软件包,这可能对您有帮助

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

阳光前端2020/03/16 22:15:59

您可以创建一个链接ln -s nodejs节点,/usr/bin 希望这可以解决您的问题。

Mandy逆天Green2020/03/16 22:15:59

问题不是安装程序
中用节点替换nodejs或将路径从/ usr / bin / nodejs更改为/ usr / bin / node

前端猿2020/03/16 22:15:59

这里简单的解决方案

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash --
sudo apt-get install nodejs

您可以通过更改setup_x.x的值来指定版本,例如更改为setup_5.x

梅伽罗2020/03/16 22:15:59

卸载您拥有的任何节点版本

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

安装nvm(节点版本管理器)https://github.com/creationix/nvm

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

现在,您可以安装所需的任何版本的节点,并在版本之间进行切换。

StafanTony2020/03/16 22:15:59

我修复了它取消链接/ usr / sbin / node(链接到ax25-node包)的问题,然后在命令行上使用此链接创建了到nodejs的链接

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

因为诸如karma之类的软件包不适用于nodejs名称,但是将karma脚本的第一行从node更改为nodejs,但我更愿意一劳永逸地解决此问题

神乐蛋蛋2020/03/16 22:15:59

对我来说,解决方法是删除node *软件包以及npm软件包。

然后重新安装为:

sudo apt-get install autoclean
sudo apt-get install nodejs-legacy
npm install
泡芙前端2020/03/16 22:15:59

您的系统无法检测到路径节点js二进制文件。

1.哪个节点

2.然后将软链接节点连接到nodejs

ln -s [the path of nodejs] /usr/bin/node 

我假设/ usr / bin在您的执行路径中。然后,您可以通过在命令行中键入node或npm进行测试,并且现在一切正常。

Pro神无猴子2020/03/16 22:15:59

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

我将推荐nvmn之类的工具来管理您的节点版本。切换和使用这些模块非常方便。 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
小宇宙猪猪乐2020/03/16 22:15:59

在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。之后,我可以在全球范围内安装软件包。

路易达蒙2020/03/16 22:15:59

尝试将节点链接到nodejs。首先找出nodejs在哪里

whereis nodejs

然后将节点软链接到node.js

ln -s [the path of nodejs] /usr/bin/node 

我假设/ usr / bin在您的执行路径中。然后,您可以通过在命令行中键入node或npm进行测试,并且现在一切正常。

蛋蛋GO2020/03/16 22:15:59
sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

sudo apt-get install nodejs-legacy
source ~/.profile

将接受的答案与source ~/.profile已折叠的注释以及之前的一些清理命令结合在一起。您很可能还需sudo apt-get install npm要这样做。

LEY乐2020/03/16 22:15:59

对我来说,问题解决了,

sudo apt-get remove node
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo ln -s /usr/bin/nodejs /usr/bin/node
alias node=nodejs
rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules
npm install -g npm@latest || sudo npm install -g npm@latest
猴子泡芙2020/03/16 22:15:59
  1. nvm首先安装使用:

    curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
    
  2. 运行命令

    source ~/.profile
    
  3. 现在运行此命令,它将显示所有已安装或其他版本的软件包:

    nvm ls-remote
    
  4. 已安装的软件包为绿色。安装所需的任何版本:

    nvm install 6.0.0
    
  5. 检查未安装的位置:

    which node
    
  6. 检查当前版本:

    node -v
    
    n=$(which node);
    n=${n%/bin/node}; 
    chmod -R 755 $n/bin/*; 
    sudo cp -r $n/{bin,lib,share} /usr/local
    
蛋蛋Davaid十三2020/03/16 22:15:59

TL; DR:

sudo apt-get install nodejs-legacy

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

以下是Debian 邮件列表中公布的委员会决议草案的引文

  1. 应将nodejs软件包更改为提供/ usr / bin / nodejs,而不是/ usr / bin / node。该软件包应与Debian中任何引用/ usr / bin / node的软件包声明Breaks:关系。

  2. nodejs源软件包还应提供Priority优先级的nodejs-legacy二进制软件包:Extra包含/ usr / bin / node作为与/ usr / bin / nodejs的符号链接。归档文件中没有任何软件包可以依赖或推荐nodejs-legacy软件包,该软件包仅出于上游
    兼容性而提供该包声明还应声明与该节点包的Conflicts:关系。

<...>

第2款是OP问题的实际解决方案。OP应该尝试安装此软件包,而不要手动进行符号链接。这是Debian软件包索引网站中此软件包的链接

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

我还没有找到有关NPM开发人员采用整件事的任何信息,但是我认为npm程序包将在某个时候被修复并nodejs-legacy成为真正的遗留物。