【问题标题】:How to update npm after set a local node prefix设置本地节点前缀后如何更新 npm
【发布时间】:2015-02-06 18:33:42
【问题描述】:

我已经使用以下命令在我的 Ubuntu 机器上安装了 nodejs + npm:

curl -sL https://deb.nodesource.com/setup | bash -
apt-get install -y nodejs

并且,为了to use yeoman without sudo,我使用了以下命令:

echo prefix = ~/.node >> ~/.npmrc
export PATH="$PATH:$HOME/.node/bin" 

在那之后,我无法更新 NPM。如果我运行npm update -g npm,版本号不会改变,但是,如果我在echo prefix 命令之前运行更新命令,则更新有效并且npm 被更新。

【问题讨论】:

  • 以下命令的输出是什么:which npm
  • @JevZelenkov 输出为/usr/bin/npm
  • 您能否运行以下命令并说出符号链接指向ls -l /usr/bin/npm 的位置?
  • @JevZelenkov 我运行了命令,这是输出:lrwxrwxrwx 1 root root 38 Jan 28 19:03 /usr/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js
  • 我已经尝试了所有路径更改、重置、关闭和重新打开但不起作用(不要更改版本)。但我看到了一个新的东西。如果我运行npm install -g npm 关闭并重新打开终端,版本号就会更新!新安装的输出:/home/nicolocodev/.node/bin/npm -> /home/nicolocodev/.node/lib/node_modules/npm/bin/npm-cli.js npm@2.4.1 /home/nicolocodev/.node/lib/node_modules/npm

标签: node.js ubuntu npm


【解决方案1】:

更新

您已安装 node + npm。默认情况下npm 使用/usr/lib/node_modules/ 目录来安装全局模块。非特权用户通常没有对该目录的写入权限,因此无法全局安装 npm 包。

命令echo prefix = ~/.node >> ~/.npmrc 告诉npm 将全局包安装到~/.node/node_modules 而不是usr/lib/node_modules

调用后:

echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc

所有提供二进制脚本的npm 包都添加到$PATH(例如yobrowserify)以及npm

npm 包通过npm 包管理器本身进行管理。以下命令将npm 更新到最新版本:

npm install -g npm

上一个答案

NodeSource 提供nodejs + npm 的二进制构建。

usage instructions 中,他们说要以 Debian 系统的管理员身份运行这两个命令:

sudo curl -sL https://deb.nodesource.com/setup | bash -
sudo apt-get install -y nodejs nodejs-legacy

安装脚本中最重要的一行是:

 echo 'deb https://deb.nodesource.com/node ${DISTRO} main' > /etc/apt/sources.list.d/nodesource.list

node + npm 现在应该全局安装在您的系统上。从现在开始,更新应由apt-get 管理。


据我所知,您的~/.node 目录中安装了另一个node + npm。我不确定你为什么需要它。据我所知,全局 npm 软件包安装到 ~/.npm 目录中,它们不会干扰 apt-get 安装的 npm 二进制文件。

无论如何,如果您真的想使用来自~./node/bin 的自定义节点安装,您应该以这种方式导出$PATH

export PATH="$HOME/.node/bin:$PATH"

您还可以通过将此命令添加到~/.bashrc 文件来自动导出$PATH

echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc

*NIX 在$PATH 指定的每个目录中查找二进制文件(例如npm)。它从左到右执行它找到的第一个匹配的二进制文件。在$PATH 变量的某个地方,您有/usr/bin。如果您想首先找到~/.node/bin 中的npm / node,则应将该目录放在$PATH 环境变量中更靠左的位置。

【讨论】:

  • 好吧,这就是我的方式:echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc 然后:npm install -g npm。感谢您的帮助
【解决方案2】:

如果你想要一个更新良好的 nodejs + npm :

sudo apt-add-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
sudo npm update -g npm

等等!

【讨论】:

    猜你喜欢
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    相关资源
    最近更新 更多