express インストールで遭遇したこと

node.js express install メモ


windows XP / cygwin に、
・npm@0.3.18
・node@v0.4.6
をインストールしたあと、expressをinstallしようとしたらこんなエラーが出てうまくいかない

$ npm install express
npm info it worked if it ends with ok
npm info using npm@0.3.18
npm info using node@v0.4.6
npm info fetch http://registry.npmjs.org/express/-/express-2.2.2.tgz
npm info calculating sha1 /tmp/npm-1303122431935/1303122431935-0.2969884683843702/tmp.tgz
npm info shasum 19c26d4cd36018896fc90a9eef3300052b3e01d2
npm info calculating sha1 /home/aaaa/.npm/libraries/.npm/.cache/express/2.2.2/package.tgz
npm info shasum 3c7584728a3cf68d8217da86ff78749e3fb729b7
npm info range mime@>= 0.0.1
npm info range qs@>= 0.0.6
npm info fetch http://registry.npmjs.org/mime/-/mime-1.2.1.tgz
npm info range connect@>= 1.3.0 < 2.0.0
npm info fetch http://registry.npmjs.org/qs/-/qs-0.1.0.tgz
npm info fetch http://registry.npmjs.org/connect/-/connect-1.3.0.tgz
npm info calculating sha1 /tmp/npm-1303122431935/1303122435374-0.9055533623322845/tmp.tgz
npm info shasum 9876d4db9491091d154288a32893564839b8e04e
npm info calculating sha1 /home/aaaa/.npm/libraries/.npm/.cache/mime/1.2.1/package.tgz
npm info shasum 3cf767a2324efb30846977d6adf40a897b46bf24
npm info calculating sha1 /tmp/npm-1303122431935/1303122436257-0.4767186113167554/tmp.tgz
npm info shasum ee0d89a79497db60a84f474796ca4842a67da119
npm info calculating sha1 /home/aaaa/.npm/libraries/.npm/.cache/connect/1.3.0/package.tgz
npm info shasum a263045b031cda52f3df74bd08203b12ad92ea4c
npm info calculating sha1 /tmp/npm-1303122431935/1303122435770-0.33003274956718087/tmp.tgz
npm info shasum 9a0d2d70d01f63d3401ea4b050822601b462ee6b
npm info calculating sha1 /home/aaaa/.npm/libraries/.npm/.cache/qs/0.1.0/package.tgz
npm info shasum 2732a31b142e8805e95aedf9760be06bd18aa1c3
npm ERR! tar "-mvxpf" "-" "-C" "/home/aaaa/.npm/libraries/.npm/connect/1.3.0" tar: Unexpected EOF in archive
npm ERR! tar "-mvxpf" "-" "-C" "/home/aaaa/.npm/libraries/.npm/connect/1.3.0" tar: Unexpected EOF in archive
npm ERR! tar "-mvxpf" "-" "-C" "/home/aaaa/.npm/libraries/.npm/connect/1.3.0" tar: Error is not recoverable: exiting now
npm ERR! tar "-mvxpf" "-" "-C" "/home/aaaa/.npm/libraries/.npm/connect/1.3.0"
npm ERR! Failed unpacking /home/aaaa/.npm/libraries/.npm/.cache/connect/1.3.0/package.tgz to /home/aaaa/.npm/libraries/.npm/connect/1.3.0
npm ERR! install failed Error: Failed tar "-mvxpf" "-" "-C" "/home/aaaa/.npm/libraries/.npm/connect/1.3.0"
npm ERR! install failed exited with 2
npm ERR! install failed at ChildProcess. (/home/aaaa/.npm/libraries/.npm/npm/0.3.18/package/lib/utils/exec.js:84:8)
npm ERR! install failed at ChildProcess.emit (events.js:67:17)
npm ERR! install failed at ChildProcess.onexit (child_process.js:192:12)
npm info install failed rollback
npm info uninstall [ 'express@2.2.2',
npm info uninstall 'mime@1.2.1',
npm info uninstall 'connect@1.3.0',
npm info uninstall 'qs@0.1.0' ]
npm info preuninstall connect@1.3.0
npm info preuninstall mime@1.2.1
npm info preuninstall qs@0.1.0
npm info preuninstall express@2.2.2
npm info uninstall connect@1.3.0
npm info uninstall mime@1.2.1
npm info uninstall express@2.2.2
npm info uninstall qs@0.1.0
npm info auto-deactive not symlink
npm info auto-deactive not symlink
npm info auto-deactive not symlink
npm info auto-deactive not symlink
npm info postuninstall connect@1.3.0
npm info postuninstall express@2.2.2
npm info postuninstall mime@1.2.1
npm info postuninstall qs@0.1.0
npm info uninstall mime@1.2.1 complete
npm info uninstall express@2.2.2 complete
npm info uninstall connect@1.3.0 complete
npm info uninstall qs@0.1.0 complete
npm info install failed rolled back
npm ERR! Error: Failed tar "-mvxpf" "-" "-C" "/home/aaaa/.npm/libraries/.npm/connect/1.3.0"
npm ERR! exited with 2
npm ERR! at ChildProcess. (/home/aaaa/.npm/libraries/.npm/npm/0.3.18/package/lib/utils/exec.js:84:8)
npm ERR! at ChildProcess.emit (events.js:67:17)
npm ERR! at ChildProcess.onexit (child_process.js:192:12)
npm ERR! Report this *entire* log at http://github.com/isaacs/npm/issues
npm ERR! or email it to
npm ERR! Just tweeting a tiny part of the error will not be helpful.
npm ERR! System CYGWIN_NT-5.1 1.7.9(0.237/5/3)
npm ERR! argv { remain:
npm ERR! argv [ 'express',
npm ERR! argv 'connect@>= 1.3.0 < 2.0.0',
npm ERR! argv 'mime@>= 0.0.1',
npm ERR! argv 'qs@>= 0.0.6',
npm ERR! argv 'qs@>= 0.0.6',
npm ERR! argv 'mime@>= 0.0.1' ],
npm ERR! argv cooked: [ 'install', 'express' ],
npm ERR! argv original: [ 'install', 'express' ] }
npm not ok

なんどか繰り返すも、上のようになる。どっかで中途半端にfetchしたファイルとか持っているのかもと思い、googleに聞いてみると、cache cleanを実行すると直る(かもしれない)と、どこぞのUSサイトにあったので試してみる。

$ npm cache clean

すると、fetchからやり直してくれるようで、しばらく見ていると、

npm info fetch http://registry.npmjs.org/connect/-/connect-1.3.0.tgz
npm info calculating sha1 /tmp/npm-1303122431935/1303122435374-0.9055533623322845/tmp.tgz
npm info shasum 9876d4db9491091d154288a32893564839b8e04e

のところで、なぜかgzipかtarがCPU100%で張り付いてしまい、動いているのかだんまりなのかの判断もできず途方にくれる。
CTL+C で強制的に落とすか、だめならkillして、再実行するとrollbackが走って、またuninstall failed rollback。



なんだかよくわからず、npmの依存関係に沿ったinstallに任せずに、ひとつずつ指定してinstallしてみる

一度、すべてuninstallする(installはうまくいってないけど念のため)

$ npm uninstall express

curlを使って、ローカルにファイルをダウンロードする

curl http://registry.npmjs.org/express/-/express-2.0.0rc.tgz > express.tgz
curl http://registry.npmjs.org/mime/-/mime-1.2.1.tgz > mime.tgz
curl http://registry.npmjs.org/qs/-/qs-0.0.7.tgz > qs.tgz

ひとつずつ install する。

$ npm install ./mime.tgz
npm info it worked if it ends with ok
npm info using npm@0.3.18
npm info using node@v0.4.6
npm info calculating sha1 /home/aaaa/.npm/libraries/.npm/.cache/mime/1.2.1/package.tgz
npm info shasum b9054cf8b2d4a2fe5461cd2db5bc193569383e52
npm info preinstall mime@1.2.1
npm info install mime@1.2.1
npm info postinstall mime@1.2.1
npm info preactivate mime@1.2.1
npm info activate mime@1.2.1
npm info postactivate mime@1.2.1
npm info build Success: mime@1.2.1
npm ok

うまくいった

$ npm install ./qs.tgz
npm info it worked if it ends with ok
npm info using npm@0.3.18
npm info using node@v0.4.6
npm info calculating sha1 /home/aaaa/.npm/libraries/.npm/.cache/qs/0.0.7/package.tgz
npm info shasum a3e49fd1f3ec22904eba6f7ad9b82a7331751b6c
npm info preinstall qs@0.0.7
npm info install qs@0.0.7
npm info postinstall qs@0.0.7
npm info preactivate qs@0.0.7
npm info activate qs@0.0.7
npm info postactivate qs@0.0.7
npm info build Success: qs@0.0.7
npm ok

これもうまくいった

最後のconnectのinstallは、expressと一緒に入ってしまった。
(これはCPU100%とかならずうまくいった)

$ npm install ./express.tgz
npm info it worked if it ends with ok
npm info using npm@0.3.18
npm info using node@v0.4.6
npm info calculating sha1 /home/aaaa/.npm/libraries/.npm/.cache/express/2.0.0rc/package.tgz
npm info shasum ccce8ce3e530ebf4cb37f785e9ee8c994f989eec
npm info range connect@>= 1.0.1 < 2.0.0
npm info fetch http://registry.npmjs.org/connect/-/connect-1.3.0.tgz
npm info calculating sha1 /tmp/npm-1303123053796/1303123057428-0.34586635674349964/tmp.tgz
npm info shasum ee0d89a79497db60a84f474796ca4842a67da119
npm info calculating sha1 /home/aaaa/.npm/libraries/.npm/.cache/connect/1.3.0/package.tgz
npm info shasum 1808a9d1ae88bed6140c7676c4726bfe89554d46
npm info preinstall express@2.0.0rc
npm info preinstall connect@1.3.0
npm info install express@2.0.0rc
npm info postinstall express@2.0.0rc
npm info preactivate express@2.0.0rc
npm info activate express@2.0.0rc
npm info postactivate express@2.0.0rc
npm info install connect@1.3.0
npm info postinstall connect@1.3.0
npm info preactivate connect@1.3.0
npm info activate connect@1.3.0
npm info postactivate connect@1.3.0
npm info build Success: express@2.0.0rc
npm info build Success: connect@1.3.0
npm ok