VPS作業メモ[9]-Socket.IOなどNode.jsのパッケージ

Node.js関連のパッケージこちらを参考にインストールしてみる。
Node.jsのWebアプリ開発に役立つパッケージ7選

特にSocket.IOを使ってみたいと思っていたら、インストール中にエラー発生した。


npmでまずはsocket.ioをインストール。
$ su
# npm install socket.io
pm ERR! Failed unpacking /tmp/npm-1321349535719/1321349544595-0.4036113559268415/tmp.tgz
npm ERR! couldn't unpack /tmp/npm-1321349535719/1321349544595-0.4036113559268415/tmp.tgz to /tmp/npm-1321349535719/1321349544595-0.4036113559268415/contents
・・・
npm not ok

なぬ!
インストール出来ないと言われてしまう。
調べてみると下記の記事と同じ症状でtarが古いことが原因だった。
さくらVPSのCentOSでnode.jsのsocket.ioをインストールしようしてエラー
node.jsでWebSocket通信
yumでは新しいものは入らないらしいので、上記記事と同じ方法でtarのアップデートをする。

今入っているtarのバージョン等を確認する。
# tar --version
tar (GNU tar) 1.15.1
# cat /etc/redhat-release
CentOS release 5.6 (Final)

tarの最新版を確認する。
http://ftp.gnu.org/gnu/tar/
tar-1.26.tar.gzでいいみたい。
# cd /usr/local/src
# wget http://ftp.gnu.org/gnu/tar/tar-1.26.tar.gz
# tar xzvf tar-1.26.tar.gz
# cd tar-1.26
# ./configure
・・・
checking whether mknod can create fifo without root privileges... configure: error: in `/usr/local/src/tar-1.26':
configure: error: you should not run configure as root (set FORCE_UNSAFE_CONFIGURE=1 in environment to bypass this check)
See `config.log' for more details.

オプションFORCE_UNSAFE_CONFIGURE=1をつけたらいいんじゃないのって言われた。
# ./configure FORCE_UNSAFE_CONFIGURE=1
# make
# make install

インストールできたか確認するために一回シェルを離脱する。
# exit
$ exit

ログインしてバージョンを確認する。
$ tar --version
tar (GNU tar) 1.26

大丈夫なので、もう一回npmでインストールする。
$ su
# npm install socket.io
socket.io@0.8.7 ./node_modules/socket.io
├── policyfile@0.0.4
├── redis@0.6.7
└── socket.io-client@0.8.7

成功!!
他のパッケージもインストールする。
# npm install express
express@2.5.0 ./node_modules/express
├── mkdirp@0.0.7
├── qs@0.3.2
├── connect@1.7.3
└── mime@1.2.4
# npm install ejs
ejs@0.4.3 ./node_modules/ejs
# npm install jsdom
jsdom@0.2.9 ./node_modules/jsdom
├── cssom@0.2.0
├── request@2.2.0
├── htmlparser@1.7.3
└── contextify@0.0.6
# npm install validator
validator@0.3.5 ./node_modules/validator
# npm install oauth
oauth@0.9.5 ./node_modules/oauth

この辺りは問題なくインストールできた。
OSXの方は、同じパッケージで問題は出ていない。

後から下記サイトを見て気がついたのだけど、
node+expressで遊んでみた
-gオプションを付けるとグローバルインストール、どのパッケージでも使用するものになり、
つけないとローカルインストール、つまりそのアプリのみで使用されるものとなる。
node-inspectorやnode-devなどの開発全般系はグローバルインストール、それ以外はローカルインストールで当面進めてみようと思う。

<2011/12/26追記>
グローバルインストールされた一覧の確認は
# npm list -g