Syntax Error.

[Sy]【解決】Macでnpm installしたら.npm配下のパーミッションの問題でエラーになる

2015/05/13

Mac OS Xにてnpm install [package]とした場合に、~/.npm配下のパーミッションの問題でパッケージのインストールに失敗してしまった。その場合の対処について。

問題

普通にnpm installでパッケージをインストールしようとすると、

$ npm install mongoose
npm ERR! Darwin 14.3.0
npm ERR! argv "/Users/utano320/.nvm/v0.12.0/bin/node" "/Users/utano320/.nvm/v0.12.0/bin/npm" "install" "mongoose"
npm ERR! node v0.12.0
npm ERR! npm  v2.5.1
npm ERR! path /Users/utano320/.npm/ms/0.1.0
npm ERR! code EACCES
npm ERR! errno -13

npm ERR! Error: EACCES, mkdir '/Users/utano320/.npm/ms/0.1.0'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES, mkdir '/Users/utano320/.npm/ms/0.1.0']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/utano320/.npm/ms/0.1.0',
npm ERR!   parent: 'mongoose' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/utano320/path/to/app/npm-debug.log

とエラーになった。

どうやら、mkdir '/Users/utano320/.npm/ms/0.1.0'でディレクトリの作成に失敗している様子。

Please try running this command again as root/Administrator.とあるので、パーミッションの問題っぽい。

試しに下記コマンドで~/.npm/ms/ディレクトリがあるのかどうか見てみると、

$ ls -al ~/.npm | grep ms
drwxr-xr-x    4 root      staff    136  3  9 18:14 ms

なるほどrootになってる。

~/.npmはキャッシュの役割みたいなので、すでに以前msパッケージをroot権限でインストールしたことがあって、それをユーザ権限で更新しようとしたからうまくいってない、ということみたい。

対処

ということで、一括で~/.npm配下のすべてのディレクトリのオーナーを自分自身に変更してしまう。

$ sudo chown -R `whoami` ~/.npm

そしてリトライ。

$ npm install mongoose
・
・
・
mongoose@4.0.2 node_modules/mongoose
├── regexp-clone@0.0.1
├── sliced@0.0.5
├── muri@1.0.0
├── hooks-fixed@1.0.1
├── mpromise@0.5.4
├── kareem@1.0.0
├── mpath@0.1.1
├── async@0.9.0
├── ms@0.1.0
├── mquery@1.4.0 (debug@0.7.4, bluebird@2.3.2)
└── mongodb@2.0.27 (readable-stream@1.0.31, mongodb-core@1.1.21)

うまくいきました!

参考