我试图安装使用哟(发电机angularjs Yoeman 没有sudo):
npm install -g generator-angular
我得到:
Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'
当我输入sudo yo
,哟告诉我,我不应该使用sudo(这是完全可以理解的)。
我有一个~/node_modules
目录-为什么不哟安装其包呢?
我试图安装使用哟(发电机angularjs Yoeman 没有sudo):
npm install -g generator-angular
我得到:
Error: EACCES, mkdir '/usr/lib/node_modules/generator-angular'
当我输入sudo yo
,哟告诉我,我不应该使用sudo(这是完全可以理解的)。
我有一个~/node_modules
目录-为什么不哟安装其包呢?
发电机设计为全球的装机量。 否则,你总是要安装你准备在每个项目中,这是不必要的痛苦的使用发电机。 此外,你不会看到可爱yo
菜单,列出了所有可用的发电机(当然,除非你安装它们所有本地):
那么,我们怎么NPM在全球范围内安装包? 正如你说正确的,你应该永远,永远跑yo
使用sudo。 有很多不同的解决方案这个问题,你可以花时间讨论其利弊宗教。
我个人不喜欢我的安装包的用户到全球 /usr/
文件夹。 /usr/
是是所有用户共享的计算机上的软件。 即使是只使用本机,还有尊重Unix文件系统层次结构的设计方式很好的理由。 例如,如果你在一个点决定为你擦去整个节点的安装。
我首选的实现方式npm
在全球范围内安装软件包无突破$HOME
是用来设置本地节点的前缀 。 这是跑步一样简单
echo 'prefix = ~/.node' >> ~/.npmrc
在当地壳。 在这之后,你要调整你的$ PATH,通过调整自己喜欢的外壳的配置,以指向新的安装目标为全球节点可执行文件。 加入EG
export PATH="$PATH:$HOME/.node/bin"
你~/.bashrc
。 在此之后,你可以愉快地运行npm install -g generator-angular
没有sudo,而不会遇到权限冲突,如果发生被彻底打破了,你想从头开始,所有你需要做的就是删除您的~/.node
目录。
由于@passy我设法终于在Ubuntu 13.04这个工作(万一有人是有类似的设置,问题)有以下几点:
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
试图运行:
npm install -g yo
导致
Error: EACCES, mkdir '/usr/lib/node_modules/yo'
使用固定的:
echo prefix = ~/.node >> ~/.npmrc
echo 'export PATH=$HOME/.node/bin:$PATH' >> ~/.bashrc
. ~/.bashrc
运行:
yo webapp
导致:
Error: EACCES, permission denied '/home/username/.config/configstore/update-notifier-yo.yml'
使用固定的:
sudo chown yourusername:yourusername /home/yourusername/.config/configstore/update-notifier-yo.yml
喜在我的情况(在Ubuntu 12.04),前缀除了在〜/ .npmrc没有改变任何东西。
如果是的话,自己建的节点包,并在/ opt /节点或/home/user/.node安装。
我有涉及流氓几乎相同的错误.yo-rc.json
从我前面安装了一个项目,我的根目录下的文件。 约曼是从安装目录切换CWD根通过安装目录的一半,但只输出EACCESS权限错误,没有任何细节,安装目录为/
。 它经历了千百年来弄清楚这是为什么,并通过约曼源参与调试,但我最终了解到,约曼将查找在目录树,直到它找到一个.yo-rc.json
,并生成代码有通过调用CHDIR到新的位置。
约曼也许应该检查该用户对目录写权限。 或者,也可以在输出提任了CWD发生了变化,或打印安装目录的名称,如果在那里发现.yo-rc.json
比CWD不同。
寻找流氓.yo-rc.json文件的命令
sudo find / -name .yo-rc.json
从yoeman入门页面显示的命令:
yo doctor
在我的情况下,$ NODE_PATH(这在我的情况下,Ubuntu的14.04,在/etc/profile.d中定义)不大于NPM根相同。 添加在$ NODE_PATH NPM根本上解决问题。
我一直在试图让yeoman
发挥好我的vagrant
框,这是我必须做的安装npm
全球包,而sudo
在ubuntu
:
$ mkdir "${HOME}/.npm-packages"
npm
在那里把全球安装的软件包~/.npmrc
文件: prefix=${HOME}/.npm-packages
npm
可以找到安装的binaries
等等.bashrc/.zshrc
: NPM_PACKAGES="${HOME}/.npm-packages"
PATH="$NPM_PACKAGES/bin:$PATH"
// `unset` `manpath` to allow inheritance from `/etc/manpath` with
// the `manpath` command
unset MANPATH // remove this line if you have previously modified `manpath`
export MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
$ source ~/.bashrc
希望这有助于人谁发现自己处于类似的情况。