没有sudo,NPM模块将不会全局安装
我刚刚重新安装了Ubuntu 12.04 LTS,在执行其他任何操作之前,我都执行了以下步骤 :
通过包管理器使用以下脚本安装节点
sudo apt-get update
sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
试图在全球安装yeoman,express,n,yeoman的生成器,并且它们都返回了相同的错误
npm ERR! 错误:EACCES,符号链接'../lib/node_modules/n/bin/n'
npm ERR! {[Error:EACCES,symlink'../lib/node_modules/n/bin/n'] errno:3,code:'EACCES',path:'../lib/node_modules/n/bin/n'}
npm ERR!
npm ERR! 请尝试以root / Administrator身份再次运行此命令。
npm ERR! 系统Linux 3.8.0-29-通用
npm ERR! 命令“/ usr / bin / node”“/ usr / bin / npm”“install”“-g”“-d”“n”
npm ERR! cwd / home / heberlz
npm ERR! 节点-v v0.10.20
npm ERR! npm -v 1.3.11
npm ERR! 路径../lib/node_modules/n/bin/n
npm ERR! 代码EACCES
npm ERR! errno 3
npm ERR! 堆栈错误:EACCES,符号链接'../lib/node_modules/n/bin/n'
npm ERR!
npm ERR! 其他日志记录详细信息可以在
npm ERR! /home/heberlz/npm-debug.log
npm ERR! 不好的代码0
回收以下文件夹的所有权 - 〜/ .npm,/ usr / lib / node,/ usr / lib / node_modules以及以下符号链接/ usr / bin / node,/ usr / bin / nodejs ,绝对没有成功
我需要安装yeoman和它的发电机没有sudo不会在后来遇到麻烦:(
Ubuntu 12.04并使用Chris Lea的PPA为我安装以下作品:
npm config set prefix '~/.npm-packages'
并将$ HOME / .npm-packages / bin添加到$ PATH中
附加到.bashrc
export PATH="$PATH:$HOME/.npm-packages/bin"
请参阅@passy的https://stackoverflow.com/a/18277225
如果您的路径中已经有$HOME/bin
,则更简单的解决方案就是......
npm config set prefix ~
$HOME/bin
目录中。 由于这个讨论确实是为了减少运行sudo
的安全风险,因此您应该了解,任何节点应用程序都可能会安装与您认为要安装的注册节点程序包名称不匹配的应用程序名称。 所以存在一个安全风险,即npm install
会替换现有的系统命令或您已经在$HOME/bin
存在的命令。 如果您担心,请先检查您正在安装的应用程序的package.json
文件中的bin
和scripts
属性。
一般来说,最安全的做法是:
$HOME/bin
放在您的路径中,以便系统命令不会被取代。 $PATH
任何相对路径,所以你不会意外地运行恰好在当前目录中的命令。 参考:
截至2014年10月:
Node.js可以从NodeSource Debian和Ubuntu二进制发行版库中获得。
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs
而已。
过时的回答:
不使用sudo的最快捷方式就像isaac在这里描述的一样
我强烈建议你不要使用sudo做包管理! 软件包可以运行任意脚本,这使得包管理器命令与链锯理发一样安全。 当然,这是快速的,绝对要克服任何障碍,但是你可能真的想让这个障碍留在那里。
我建议这样做一次:
sudo chown -R $USER /usr/local
编辑:
有关将/ usr / local的所有权更改为当前用户的某些安全问题和功能限制:
话虽如此,如果你想在不使用sudo的情况下安装全局模块,我没有看到比提到的更好的解决方案(从实用的角度)。 安全与易用性是非常广泛的话题,并且没有简单的答案 - 它只取决于您的要求。
链接地址: http://www.djcxy.com/p/27691.html