2014年4月25日金曜日

Homebrewで入れたNode.jsのnpmが更新できない時にすべきたった一つのこと

一度Node.jsをアンインストールして、再インストールしましょう。

HomebrewからインストールしたNode.jsのnpmを npm update で更新しようとすると、下記のようなエラーが出る事があります。

npm ERR! error rolling back Error: Refusing to delete: /usr/local/bin/npm not in /usr/local/lib/node_modules/npm
npm ERR! error rolling back     at clobberFail (/usr/local/Cellar/node/0.10.15/lib/node_modules/npm/lib/utils/gently-rm.js:41:12)
npm ERR! error rolling back     at next (/usr/local/Cellar/node/0.10.15/lib/node_modules/npm/lib/utils/gently-rm.js:27:14)
npm ERR! error rolling back     at /usr/local/Cellar/node/0.10.15/lib/node_modules/npm/lib/utils/gently-rm.js:36:12
npm ERR! error rolling back     at Object.oncomplete (fs.js:107:15)
npm ERR! error rolling back  npm@1.3.7 { [Error: Refusing to delete: /usr/local/bin/npm not in /usr/local/lib/node_modules/npm] code: 'EEXIST', path: '/usr/local/bin/npm' }
npm ERR! Refusing to delete: /usr/local/bin/npm not in /usr/local/lib/node_modules/npm
File exists: /usr/local/bin/npm
Move it away, and try again.

参考: Error: Refusing to delete: /usr/local/bin/npm #3794

これ、8ヶ月くらい前(2014/04現在)からずっと問題になっていたんですが、3週間ほど前に解決したようです。

参考: node: install npm using tarball. #28075

解決方法は簡単。HomebrewからインストールしたNode.jsを一旦削除して、再インストールするだけ。

brew uninstall node
brew install node

これでnpmが npm update で更新できるようになります。