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

时间:2015-02-05 19:37:29

标签: node.js ubuntu npm

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

2 个答案:

答案 0 :(得分:2)

更新

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

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

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

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

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

* NIX在npm中指定的每个目录中查找二进制文件(例如$PATH)。它从左到右执行并执行它找到的第一个匹配的二进制文件。 $PATH变量中的某处/usr/bin。如果您希望首先找到来自npm的{​​{1}} / node,则应将该目录放在~/.node/bin环境变量的左侧。

答案 1 :(得分:0)

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

Etvoilà!