概要
node.js を brew からインストールしようと、brew install node
を実行すると、brew postinstall node
を実行する旨のエラーが発生したので、エラーに従い、brew postinstall node
を実行しようとすると sudo 権がいることが判明しました。はじめは sudo を使って node をインストールしたのですが、brew なんだから sudo 権なしで実行できるはず、どこかの実行権限がおかしくなっているのではないかと思い立ち、sudo 権なしで brew postinstall
できるよう対処しました。
sudo を使って無理矢理 brew postinstall node
をした話
node.js を入れようと、とりあえず brew install node
を実行してみました。
$ brew install node
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/node-0.10.29.mavericks.bottle.tar.gz
Already downloaded: /Library/Caches/Homebrew/node-0.10.29.mavericks.bottle.tar.gz
==> Pouring node-0.10.29.mavericks.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
==> make install
npm ERR! Additional logging details can be found in:
npm ERR! /usr/local/lib/node_modules/npm/npm-debug.log
npm ERR! not ok code 0
make[1]: *** [node_modules/.bin/ronn] Error 1
make: *** [man/man3/npm-bin.3] Error 2
Warning: The post-install step did not complete successfully
You can try again using `brew postinstall node`
==> Summary
/usr/local/Cellar/node/0.10.29: 1547 files, 18M
brew postinstall node
をするよう言われたので、これをまた実行します。
$ brew postinstall node
==> make install
npm ERR! Additional logging details can be found in:
npm ERR! /usr/local/lib/node_modules/npm/npm-debug.log
npm ERR! not ok code 0
make[1]: *** [node_modules/.bin/ronn] Error 1
make: *** [man/man3/npm-bin.3] Error 2
READ THIS: https://github.com/Homebrew/homebrew/wiki/troubleshooting
エラーが発生。 /usr/local/lib/node_modules/npm/npm-debug.log
にエラーのログが出ていると予想されるのですが、このときの私はそれを見ることなく Google で検索をしていました。(ほんとは見るべきでした)
npmコマンドが使えなくなったので、node.jsからインストールした | Your Way, My Way, Any Way -
上記のサイトで、sudo brew postinstall node
ならエラーが出なかった、という記事があったため、sudo 付きで実行してみました。
$ sudo brew postinstall node
==> make install
==> /usr/local/bin/npm update npm -g --prefix /usr/local
エラー発生せず終わりました。
sudo なしで実行できるようにがんばる
brew を使うときは sudo なしで実行したいので、sudo なしでできないかと思い、node.js の再インストールを試みました。
node をアンインストール
npm uninstall npm -g
して、brew uninstall node
を実行する。
再び brew install node
を実行
brew install node
を再び実行すると、また最初のエラーが発生しました。
今度はちゃんと /usr/local/lib/node_modules/npm/npm-debug.log
をのぞいてみます。
$ less /usr/local/lib/node_modules/npm/npm-debug.log
10 silly lockFile 806e3618-ronn ronn
11 verbose lock ronn /Users/misaki/.npm/806e3618-ronn.lock
12 silly lockFile 806e3618-ronn ronn
13 error Error: Attempt to unlock ronn, which hasn't been locked
13 error at unlock (/usr/local/lib/node_modules/npm/lib/cache.js:1434:11)
13 error at cb (/usr/local/lib/node_modules/npm/lib/cache.js:925:5)
13 error at /usr/local/lib/node_modules/npm/lib/cache.js:942:20
13 error at /usr/local/lib/node_modules/npm/lib/cache.js:1420:7
13 error at /usr/local/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
13 error at OpenReq.Req.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
13 error at OpenReq.done (/usr/local/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
13 error at Object.oncomplete (fs.js:107:15)
14 error If you need help, you may report this *entire* log,
14 error including the npm and node versions, at:
14 error <http://github.com/npm/npm/issues>
15 error System Darwin 13.3.0
16 error command "node" "/usr/local/lib/node_modules/npm/cli.js" "install" "ronn" "--no-global"
17 error cwd /usr/local/lib/node_modules/npm
18 error node -v v0.10.29
19 error npm -v 1.4.9
“Error: Attempt to unlock ronn, which hasn't been locked” でググってたら以下のサイトを発見しました。
node.js - NPM cannot install dependencies -
ここを参考に、ホームディレクトリ直下の .npm
の権限を確認してみました。
$ ls -la
drwxr-xr-x+ 14 root wheel 476 7 22 16:45 .npm
root で wheel 所有だったので、権限を自分に変更してみます。
$ sudo chown -R misaki:staff .npm
これでもう一回 brew postinstall node
を実行。
$ brew postinstall node
==> make install
==> /usr/local/bin/npm update npm -g --prefix /usr/local
Error: Permission denied - /Users/misaki/Library/Logs/Homebrew/node/02.npm
だめでした。
エラーに従って、権限確認します。
$ ls -l /Users/misaki/Library/Logs/Homebrew/node/
total 2344
-rw-r--r--+ 1 misaki staff 1201 10 5 2013 01.configure
-rw-r--r--+ 1 misaki staff 0 7 22 17:09 01.make
-rw-r--r--+ 1 misaki staff 1187941 10 5 2013 02.make
-rw-r--r--+ 1 root staff 412 7 22 16:45 02.npm
また自分で実行出来るよう権限を変更します。
$ sudo chown -R misaki:staff /Users/misaki/Library/Logs/Homebrew/node/02.npm
再チャレンジ。
$ brew postinstall node
==> make install
==> /usr/local/bin/npm update npm -g --prefix /usr/local
sudo なしでいけました!