如何在设置本地节点前缀后更新 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(例如 yo
、browserify
)以及 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
瞧瞧!
我已经使用以下命令在我的 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(例如 yo
、browserify
)以及 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
瞧瞧!