NPM不会在Mac上安装任何软件包。 新的,干净的构build。 EACCES和其他错误
我从头开始重build我的Mavericks(Mac OS X Version 9.4)机器。 我是本机的pipe理员和唯一用户。
- 我通过
git-2.0.1-intel-universal-snow-leopard.pkg
( http://git-scm.com/downloads )在默认的/usr/local/git/bin/git
位置安装了/usr/local/git/bin/git
。 - 我通过他们的
node-v0.10.30.pkg
( http://nodejs.org/download/ )在其默认的/usr/local/bin/node
位置安装了/usr/local/bin/node
。 - Node的安装程序包的最后一步包括一个注意事项,他们也在默认的
/usr/local/bin/npm
位置安装了NPM。 - 我的
$PATH
回声/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin
/usr/local/bin
)。
运行npm install -g bower
导致:
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/bower' npm ERR! { [Error: EACCES, mkdir '/usr/local/lib/node_modules/bower'] npm ERR! errno: 3, npm ERR! code: 'EACCES', npm ERR! path: '/usr/local/lib/node_modules/bower', npm ERR! fstream_type: 'Directory', npm ERR! fstream_path: '/usr/local/lib/node_modules/bower', npm ERR! fstream_class: 'DirWriter', npm ERR! fstream_stack: npm ERR! [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23', npm ERR! '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53', npm ERR! 'Object.oncomplete (fs.js:107:15)' ] } npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! System Darwin 13.3.0 npm ERR! command "node" "/usr/local/bin/npm" "install" "-g" "bower" npm ERR! cwd /Users/Home npm ERR! node -v v0.10.30 npm ERR! npm -v 1.4.21 npm ERR! path /usr/local/lib/node_modules/bower npm ERR! fstream_path /usr/local/lib/node_modules/bower npm ERR! fstream_type Directory npm ERR! fstream_class DirWriter npm ERR! code EACCES npm ERR! errno 3 npm ERR! stack Error: EACCES, mkdir '/usr/local/lib/node_modules/bower' npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23 npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53 npm ERR! fstream_stack Object.oncomplete (fs.js:107:15) npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /Users/Home/npm-debug.log npm ERR! not ok code 0
运行类似的安装( npm install -g yo
, npm install -g grunt
, npm install -g nvm
, npm install -g npm
)会导致出现相同的错误列表。
有几个人在线build议通过sudo
强制安装,但其他几个人警告这可能会导致以后的问题。 这些软件包的手册似乎没有提到sudo
要求,在某些情况下,他们build议在发生此问题时联系NPM。
运行npm cache clear
不能解决问题。
在home( ~
)目录中运行ls -la
将显示我的Mac OS X用户名作为我的.npm
目录的所有者: drwxr-xr-x 15 admin staff 510 Aug 11 23:53 .npm
有谁知道出了什么问题,以及如何纠正? 谢谢。
顺便说一下,我通过将/usr/local
的所有者更改为我自己来解决此问题,以便允许NPM将模块置于默认位置,而不需要每个包的安装都需要sudo
。
sudo chown -R `whoami` /usr/local
EACCES是无法进行操作的错误。
采取行: npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/bower'
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/bower'
我们可以看到npm
无法在给定的位置创build一个目录。
原因很可能是您没有以超级用户的身份运行该命令。 事实上,错误日志甚至提示:
npm ERR! 请尝试以root / Administrator身份再次运行此命令。
要以pipe理员身份运行,必须在sudo
加上这些命令。 那是:
sudo npm install -g bower
。 出于安全原因,您将被要求input密码。
开始新鲜删除之前的node.js和npm安装以及这些:
〜/ .npmrc〜/ .npm〜/ tmp〜/ .npm-init.js
安装nodejs和npm作为你自己不要做root这些命令(linux):
mkdir ${HOME}/bin
从http://nodejs.org/download/下载源代码
cd v0.10.30/ ./configure --prefix=${HOME}/bin/nodejs make -j8 make install
把它放到上面定义的dir中–prefix
export PATH=${HOME}/bin/nodejs/bin:$PATH
NODE_PATH,所以节点可以find模块的目录,否则npm安装xxx会把新安装的模块放到目录curr目录中:
export NODE_PATH=${HOME}/bin/nodejs/lib/node_modules
做以上操作并使用语法:npm install xxxxx -g总是使用-g作为全局
nodejs install也给你npm:
ls -la ${HOME}/bin/nodejs/bin
我build议你使用版本pipe理器(如nvm)来安装Node.js。 这样,你一箭双雕,
- 首先,你可以在同一台机器上pipe理Node.js的多个版本(迟早你会这样做的)。
- 其次,你解决了在没有安装Node.js时遇到的所有访问问题。 至less这是我的经验。
基本上就像跑步一样简单
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.24.1/install.sh | bash
从命令行。