运行
npm超级用户具有运行某些不可信代码作为超级用户的风险,其可以与你的整个系统潜在的混乱。运行
npm作为非特权用户运行用更少的特权码的风险,因此不能乱用整个系统-
只是用自己的文件(可以是同样糟糕,这取决于你如何看待它)。
我经常建议做的是将Node安装在主目录中,而不是在系统上全局安装(如果是您自己的计算机)。这样,你不必与运行
sudo或
su用于
npm甚至为
makeinstall节点本身。
我运行了很多版本的Node,有时是使用不同的开关从源代码编译的,而我使用的约定是将Node安装在版本化目录中,该目录既可以全局安装
/opt(但随后需要
sudo),也可以本地安装在home目录中
~/opt。
我这样做是这样的:
wget https://nodejs.org/dist/v7.1.0/node-v7.1.0.tar.gztar xzvf node-v7.1.0.tar.gzcd node-v7.1.0./configure --prefix=$HOME/opt/node-v7.1.0make && make test && make install
然后创建一个
~/opt/node指向的符号链接
~/opt/node-v7.1.0,我有:
PATH="$HOME/opt/node/bin:$PATH"
在我
.profile或
.bashrc。
这样,我不必以超级用户身份运行即可安装Node或运行npm。
另外,我可以通过更改符号链接来快速切换默认的Node版本,如果更改PATH或使用诸如的完整路径运行Node,则可以随时运行其他版本
~/opt/node-v7.0.0/bin/node。
我不想在这里进行过多的讨论,因为这个答案是关于为什么
npm以超级用户身份运行不是一个好主意-
此安装过程只是一个不必以
npm超级用户身份运行的解决方案。
设置npm权限以避免以超级用户身份运行的其他选项在npm docs 中的“
修复npm权限”中进行了描述(感谢RyanZim在注释中指出)。



