如何在设置本地节点前缀后更新 npm

How to update npm after set a local node prefix

我已经使用以下命令在我的 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 被更新。

更新

您已安装 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

The most important line in the setup script is this:

 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 环境变量的左侧。

如果你想要一个更新良好的 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

瞧瞧!