kakts-log

programming について調べたことを整理していきます

macで npm install時にEACCESSエラーが出る

macでnpm install 時にEACCESSエラーが出る

macでnodeやnpmバージョンアップした後、 sudo npm install などでroot権限でインストールしたあとにnpmで以下のエラーが出るようになってしまった

npm ERR! Darwin 13.4.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "babel-cli"
npm ERR! node v4.6.0
npm ERR! npm  v3.10.8
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

この場合npm install時に毎回参照されるnpm default directoryの権限がおかしくなっていると思い、 /usr/local/lib/node_modules以下の権限を見てみると、オーナーがrootになっていた

$ cd /usr/local/lib/node_modules
$ ls -Fal
total 0
drwxr-xr-x   13 24561   wheel   442 10 24 23:34 ./
drwxrwxrwx   93 root    admin  3162  6  2 01:01 ../
drwxr-xr-x  219 root    wheel  7446 10 24 23:34 .staging/
drwxr-xr-x    8 nobody  staff   272  3 14  2015 async/
drwxr-xr-x   13 nobody  staff   442  1 23  2016 coffee-script/
drwxr-xr-x   13 nobody  staff   442 12 15  2013 express/
drwxr-xr-x    8 nobody  staff   272  9  5  2014 express-generator/
drwxr-xr-x    8 nobody  staff   272  1 23  2016 generator-hubot/
drwxr-xr-x   19 nobody  staff   646  1 23  2016 hubot/
drwxr-xr-x    6 nobody  staff   204  7 10  2015 n/
drwxr-xr-x   27 root    wheel   918 10 23 15:07 npm/
drwxr-xr-x   14 nobody  staff   476  4 12  2016 request/
drwxr-xr-x    6 nobody  staff   204  1 23  2016 yo/

どう対処したか

多少強引ではあるが、mac環境でsudo npm installをすると rootユーザでnpm installするなみたいな警告がでていたので オーナーを自分のユーザに戻した

 $sudo chown -R testuser /usr/local

これで解決した

他のアプローチで対処できるのか

npm 公式のトラブルシューティングに対策が幾つか書いてある

docs.npmjs.com

その他の方法としては以下の方法があり、上記urlにまとまってます。