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

Ubuntu上的nodejs解释程序名称( node )已重命名为nodejs因为名称与其他程序包有冲突。 以下是readme.debian所说的内容:

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

这是为了防止命名空间冲突:其他命令在其上游使用相同的名称,例如“节点”包中的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,但解释器名称不同?


TL; DR:

sudo apt-get install nodejs-legacy

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

以下是Debian邮件列表中发布的委员会决议草案的引用:

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

  • nodejs源代码包还应提供包含/ usr / bin / node作为/ usr / bin / nodejs符号链接的Priority:extra的nodejs-legacy二进制包。 档案中的任何软件包都不依赖于或推荐仅为上游提供的nodejs-legacy软件包
    兼容性。 这个包声明还应该声明与节点包的冲突:关系。

  • <...>

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

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

    我还没有发现关于NPM开发人员采用整个事情的任何信息,但我认为npm软件包将被固定在某个点上,并且nodejs-legacy成为真正的传统。


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

    whereis nodejs
    

    然后到nodejs的软链接节点

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

    我假设/ usr / bin在您的执行路径中。 然后你可以通过在你的命令行输入node或npm来测试,现在所有的东西都可以工作。


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


    说明:


    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功能的访问权,您需要注销并重新登录,或者可以获取〜/ .profile文件,以便您的当前会话知道有关更改:

    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时,可执行文件称为节点。 您可以通过输入以下命令来查看shell正在使用的版本:

    node -v
    

    这个补充教程可以在这里找到

    链接地址: http://www.djcxy.com/p/4757.html

    上一篇: Cannot install packages using node package manager in Ubuntu

    下一篇: npm WARN package.json: No repository field