Tower.jsに限った話ではないのですが。
npm install でエラーが出て、update や uninstall を繰り返していると、今までインストールできていたパッケージがインストールできなくなったりします。
僕の場合、design.io や tower のインストールでこんなエラーが多発してどうしても治りませんでした。
$ npm install -g design.io npm http GET https://registry.npmjs.org/design.io npm http 200 https://registry.npmjs.org/design.io npm http GET https://registry.npmjs.org/design.io/-/design.io-0.3.0-6.tgz npm http 200 https://registry.npmjs.org/design.io/-/design.io-0.3.0-6.tgz npm ERR! error installing design.io@0.3.0-6 npm ERR! error rolling back design.io@0.3.0-6 Error: EPERM, operation not permitted '/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/design.io/node_modules/express/node_modules/___connect.npm/package' npm ERR! Error: EPERM, operation not permitted '/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/design.io/node_modules/express/node_modules/___connect.npm/package' npm ERR! npm ERR! Please try running this command again as root/Administrator. npm ERR! npm ERR! System Darwin 11.3.0 npm ERR! command "node" "/Users/inouetomoyuki/.nvm/v0.6.12/bin/npm" "install" "-g" "design.io" npm ERR! cwd /Users/inouetomoyuki npm ERR! node -v v0.6.12 npm ERR! npm -v 1.1.4 npm ERR! path /Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/design.io/node_modules/express/node_modules/___connect.npm/package npm ERR! code EPERM npm ERR! message EPERM, operation not permitted '/Users/inouetomoyuki/.nvm/v0.6.12/lib/node_modules/design.io/node_modules/express/node_modules/___connect.npm/package' npm ERR! errno {} npm ERR! npm ERR! Additional logging details can be found in: npm ERR! /Users/inouetomoyuki/npm-debug.log npm not ok
npm install で途中、ERRが起きてしまうと中途半端なキャッシュが残ってしまうことがあるとのこと。キャッシュファイルが原因でインストールできない現象が起きてしまうというわけです。キャッシュファイルは ~/.npm/.npm か ~/.npm/.npm-cache 配下に保存されます。
design.ioやtower.jsの巨大なパッケージ群では、cleanしていないパッケージもあるのかしら、と妄想。たぶん iniとredis。
で、キャッシュファイルを削除するには、以下のオプションを使います。
$ npm cache clean
ERRが出る場合があります。(この時点でもERR無視して npm install したらERRなくインストールできましたが)
cacheを一覧するコマンドは、
$ npm cache ls ~/.npm/cloud9/ ~/.npm/cloud9/0.5.1/ ~/.npm/cloud9/0.5.1/package/ ~/.npm/cloud9/0.5.1/package/support/ ~/.npm/cloud9/0.5.1/package/support/socket.io-client/ ~/.npm/cloud9/0.5.1/package/support/socket.io-client/lib/ ~/.npm/cloud9/0.5.1/package/support/apf/ ~/.npm/cloud9/0.5.1/package/support/apf/elements/ ~/.npm/cloud9/0.5.1/package/support/apf/elements/video/ ~/.npm/tower/ ~/.npm/tower/0.3.2/ ~/.npm/tower/0.3.2/package/ ~/.npm/tower/0.3.2/package/lib/ ~/.npm/tower/0.3.2/package/lib/tower/ ~/.npm/tower/0.3.2/package/lib/tower/generator/ ~/.npm/tower/0.3.2/package/lib/tower/generator/generators/ ~/.npm/tower/0.3.2/package/lib/tower/generator/generators/tower/ ~/.npm/tower/0.3.2/package/lib/tower/generator/generators/tower/app/ ~/.npm/tower/0.3.9-10/ ~/.npm/tower/0.3.9-10/package/ ~/.npm/tower/0.3.9-10/package/lib/ ~/.npm/tower/0.3.9-10/package/lib/tower/ ...
です。階層で表示されます。~/.npm/{パッケージ名}/{バージョン番号} 毎に分類されています。npm cache clean直後ですと、キャッシュを潜っていくとディレクトリしか残っていないようです。
思い切って、~/.npm以下を削除してみます。
$ cd ~/.npm $ ls -la total 0 drwxr-xr-x 5 inouetomoyuki inouetomoyuki 170 3 10 22:15 . drwxr-xr-x 85 inouetomoyuki inouetomoyuki 2890 3 10 22:15 .. drwxrwxrwx 3 inouetomoyuki inouetomoyuki 102 3 10 21:52 cloud9 drwxrwxrwx 3 inouetomoyuki inouetomoyuki 102 3 10 22:15 npm drwxrwxrwx 5 inouetomoyuki inouetomoyuki 170 3 10 22:15 tower $ rm -fr cloud9/ npm/ tower/ $ npm cache clean
npm cache clean でエラーが出なくなりました。
再度、tower.jsをインストールして起動してみます。
$ npm install design.io -g $ npm install tower -g $ tower new sample $ cd sample $ sudo npm install $ mongod --dbpath ~/Library/MongoDB_Db/ & $ node server.js info - socket.io started [Sat, 10 Mar 2012 13:46:47 GMT] INFO Tower development server listening on port 3000 info: Name: design.io-watcher::device_manager hook::listening Type: hook Data: 5000 info: Name: design.io-watcher::device_manager hook::started Type: hook Data: 5000
無事インストールと起動ができました。(最後のsudoはdesign.ioが/Library/Ruby/Gems/1.8のgemを使ってインストールしているため)
何故かわからないけど インストールできない。githubのIssueもない。といった場合、キャッシュを疑ってみるといいことあるかもしれません。
0 件のコメント:
コメントを投稿