brew postinstall node を実行する際に sudo を求められたので、sudo なしでできるように

## 概要
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` を実行してみました。

```bash
$ 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` をするよう言われたので、これをまた実行します。

```bash
$ 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 -](http://tako.jugem.cc/?eid=861)

上記のサイトで、`sudo brew postinstall node` ならエラーが出なかった、という記事があったため、sudo 付きで実行してみました。

```bash
$ 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` をのぞいてみます。

```bash
$ 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 -](http://stackoverflow.com/questions/22152162/npm-cannot-install-dependencies-attempt-to-unlock-something-which-hasnt-been)

ここを参考に、ホームディレクトリ直下の `.npm` の権限を確認してみました。

```bash
$ ls -la
drwxr-xr-x+ 14 root    wheel     476  7 22 16:45 .npm
```

root で wheel 所有だったので、権限を自分に変更してみます。

```bash
$ sudo chown -R misaki:staff .npm
```

これでもう一回 `brew postinstall node` を実行。

```bash
$ 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
```

だめでした。
エラーに従って、権限確認します。

```bash
$ 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
```

また自分で実行出来るよう権限を変更します。

```bash
$ sudo chown -R misaki:staff /Users/misaki/Library/Logs/Homebrew/node/02.npm
```

再チャレンジ。

```bash
$ brew postinstall node
==> make install
==> /usr/local/bin/npm update npm -g --prefix /usr/local
```

sudo なしでいけました！