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

由于与另一个包的名称冲突,Ubuntu上的NodeJS解释器名称(node)已重命名为nodejs。这是自述。Debian说:

node .js解释器命令的上游名称为“node”。 在Debian中,解释器命令已更改为"nodejs".

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

.使用"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已经安装在系统上,但解释器名称不同?

255146 次浏览

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

whereis nodejs

然后将节点软链接到nodejs

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

我假设/usr/bin在您的执行路径中。然后你可以在命令行中输入node或npm进行测试,现在一切都可以工作了。

TL;博士:

sudo apt-get install nodejs-legacy

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

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

  1. nodejs包需要修改为提供/usr/bin/nodejs,而不是/usr/bin/node。这个包应该声明一个断点:关系 Debian中任何引用/usr/bin/node.

  2. 的包 nodejs源包还应该在Priority: extra提供一个nodejs-legacy二进制包,其中包含/usr/bin/node作为指向的符号链接 /usr/bin/nodejs.存档中的任何包都不能依赖于或推荐 nodejs-legacy包,它仅为upstream
    提供 兼容性。此包声明还应声明冲突: 与节点包的关系

    . xml

& lt;…>

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

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

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

你也可以使用NVMNodejs版本管理器来安装Nodejs,使用版本管理器有很多好处。其中之一就是你不必担心这个问题。

< br >

产品说明:

< br >

sudo apt-get update
sudo apt-get install build-essential libssl-dev

一旦安装了必要的包,就可以从项目的GitHub页面下拉nvm安装脚本。版本号可能不同,但一般情况下,您可以使用以下语法下载并安装它:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

这将下载脚本并运行它。它将把软件安装到你的主目录~/.nvm的子目录中。它还将为您的~/.profile文件添加必要的行以使用该文件。

要访问nvm功能,您需要注销并重新登录,或者您可以源~/。配置文件,以便您的当前会话知道更改:

source ~/.profile

现在你已经安装了nvm,你可以安装独立的Node.js版本。

要找出可用于安装的Node.js版本,您可以键入:

nvm ls-remote
. . .


v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

如您所见,撰写本文时的最新版本是v0.11.14。你可以通过输入:

nvm install 0.11.14

通常,nvm会切换到使用最新安装的版本。你可以显式地告诉nvm使用我们刚刚下载的版本:

nvm use 0.11.14

当你使用nvm安装node. js时,可执行文件被称为node。你可以通过输入以下命令查看shell当前使用的版本:

node -v

完整的教程可以在在这里中找到

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

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

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

对我来说,修复是删除node*包和npm包。

然后重新安装如下:

sudo apt-get install autoclean
sudo apt-get install nodejs-legacy
npm install

这里是我使用的另一种方法,因为我喜欢n,以便在节点版本之间轻松切换。

在一个新的Ubuntu系统上,首先安装“system”节点:

curl -sL https://deb.nodesource.com/setup | sudo bash -

然后全局安装n模块:

npm install -g n

因为系统节点是先安装的(如上),所以可以使用替代系统干净地指向n提供的节点。首先确保替代系统中没有节点:

update-alternatives --remove-all node

然后添加n提供的节点:

update-alternatives --install /usr/bin/node node /usr/local/bin/node 1

接下来添加系统提供的节点(使用curl安装的节点):

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2

现在使用交互式菜单选择n提供的节点(从以下命令显示的菜单中选择/usr/local/bin/node):

update-alternatives --config node

最后,由于/usr/local/bin在PATH中通常比/usr/bin具有更高的优先级,如果要使替代系统节点有效,必须创建以下别名(在.bashrc或.zshrc中输入);否则,在/usr/local/bin中使用n安装的节点总是优先:

alias node='/usr/bin/node'

现在你可以使用n <desired node version number>轻松地在节点版本之间切换。

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

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

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之后。

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

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

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

  1. 首先使用以下方法安装nvm:

    curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
    
  2. Run command

    source ~/.profile
    
  3. Now run this and this will show will all installed or other versions of packages:

    nvm ls-remote
    
  4. Installed packages will be in green. Install whatever version you want:

    nvm install 6.0.0
    
  5. Check where is not installed:

    which node
    
  6. Check current version:

    node -v
    
    
    n=$(which node);
    n=${n%/bin/node};
    chmod -R 755 $n/bin/*;
    sudo cp -r $n/{bin,lib,share} /usr/local
    

来自在这里的简单解决方案

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

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

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

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

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

#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

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

1.哪个节点

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

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

我假设/usr/bin在您的执行路径中。然后你可以在命令行中输入node或npm进行测试,现在一切都可以工作了。

安装程序中没有问题
将nodejs替换为node,或者将路径从/usr/bin/nodejs改为/usr/bin/node

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

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

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

对我来说,问题是这样解决的,

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
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/

面对同样的问题,下面的步骤对我有用。

在系统上安装curl,然后运行NVM安装程序脚本。

sudo apt install curl
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash

加载环境

source ~/.profile

安装Node.js支持的版本。

nvm install 16.15.1

安装确认

node -v