JavaScriptの勢いはすごいっすね。Publickeyさんでも紹介されていましたが、日に日にJavaScriptの重要性は増しているようです。

特に2010年から、これまでのブラウザ上の環境としてのみではなく、node.jsをはじめとしたサーバサイドや、Titaniumをはじめとしたスマートフォン向けのネイティブアプリなど、もはやWebを取り巻く技術はJavaScriptを中心にまわり始め、自分のようなJavaScript大好き!な子にはたまらない状況になってきています。

さらにCPANやRubyGemsのようなライブラリ管理や、rvmのような複数のバージョンを簡単に切り替えてくれるツールにあたるものがnode.js周辺にも現れ、どんどん使いやすくなりウハウハですね。過去に何度かnode.jsは使いましたが、これら関連ツールによりかなりスッキリしたのでインストールメモということでエントリにしました。

なお、OSはCentOS 5.5で、OSインストール時も最小限のベースパッケージのみにしてあります(さすがにgccはインストール済み)インストール先はすべてユーザディレクトリ配下とし、ソースコンパイル系は「~/local/[ソフト名]」githubからチェックアウトしてきたものは「~/github」というルールで進めています。

とはいえ、大半はこちらを参考にさせていただいています。いつも拝見しておりますありがとうございます! node.jsとnpmのインストール

gitのインストール

node.jsにおけるrvmとして代表的なものがnaveと呼ばれるもののようです。githubから利用するのがベターなのでgitを先にインストールします。

// まずは最新版のgitをソースからインストールするよ
$ wget http://kernel.org/pub/software/scm/git/git-1.7.4.1.tar.bz2
$ tar -jxf git-1.7.4.1.tar.bz2
$ cd git-1.7.4.1
$ ./configure --prefix=~/local/git-1.7.4.1
$ make
GIT_VERSION = 1.7.4.1
    * new build flags or prefix
    CC daemon.o
daemon.c:1 から include されたファイル中:
cache.h:17:18: error: zlib.h: そのようなファイルやディレクトリはありません
In file included from daemon.c:1:
cache.h:22: error: expected ‘)’ before ‘strm’
cache.h:23: error: expected ‘)’ before ‘strm’
cache.h:24: error: expected ‘)’ before ‘strm’
make: *** [daemon.o] エラー 1

zlib.hがないと怒られました。rpmパッケージ群をgrepしたら開発ツールがなかったのでさくっとyumで早速インストールし、リトライ!無事インストール完了。

$ rpm -qa | grep zlib
zlib-1.2.3-3
zlib-1.2.3-3
$ sudo yum install zlib-devel
$ make
$ sudo make install

nave経由でnode.jsのインストール

では早速naveをチェックアウトし、nave経由でnode.jsをインストール。最新版は「latest」を引数にとり、バージョンを指定したい場合はバージョン番号を指定する。

$ git clone git://github.com/isaacs/nave.git
$ cd nave
$ ./nave.sh install latest
######################################################################## 100.0%
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for program gcc or cc           : /usr/bin/gcc 
Checking for gcc                         : ok  
Checking for library dl                  : yes 
Checking for openssl                     : not found 
Checking for function SSL_library_init   : not found 
Checking for header openssl/crypto.h     : not found 
/home/iwakou/github/nave/src/0.4.1/wscript:303: error: Could not autodetect OpenSSL support. Make sure OpenSSL development packages are installed. Use configure --without-ssl to disable this message.
Failed to configure 0.4.1
fail

あれ?怒られた。OpenSSLがないと。おそらく先ほどと同様開発ツールが抜けていると思ったら案の定そうだった。yumでさくっと入れてリトライ、うまくnode.jsがインストールできました。

$ rpm -qa | grep openssl
openssl-0.9.8e-12.el5_5.7
openssl-0.9.8e-12.el5_5.7
$ sudo yum install openssl-devel
$ ./nave.sh install latest

インストールしたnode.jsを環境変数「$PATH」に通す場合や、インストール済みのバージョンを標準のnave.shから簡単に行うことができるようです。

# インストール済みのバージョンを確認する
$ ./nave.sh ls
# 環境変数「$PATH」に通す(latestはない場合インストールから入るので危険?!)
$ ./nave.sh use 0.4.1
# 常時「$PATH」を通しておく場合は「~/.bashrc」に書いておくと良いよね
$ ~/.bashrc
if [ -f ~/github/nave/nave.sh ]; then
	~/github/nave/nave.sh use 0.4.1
fi

ただし、useで$PATHを通すと.bashrcを再読み込みする(というかカレントユーザで再ログイン)しているような動きをとり、若干気持ちが悪い(psで見るとずっと.nave.shが常駐している)ので、結局nave標準の方法は使わず、純粋に使いたいバージョンのbinディレクトリを自分で$PATHに追加することで対応しています。
(この現象は自分だけでしょうか?詳しい方は教えてください)

npmのインストール

最近はnode.jsとセットで取り上げられることが多くなったnpmをインストール。すっかりおなじみnode.js系のライブラリ管理システムですね。ついでにメジャーなライブラリ「soket.io(いまをときめくWebSocketsの機能を提供してくれる優れもの)」と「express(Webアプリケーションのルーティングを支援するフレームワーク。RailsとSinatraを足して2で割ったような感じ)」に加え、個人的に最も使いやすそうなテンプレートエンジン「ejs」をインストール。

curl http://npmjs.org/install.sh | sh
$ npm install socket.io
$ npm install express
$ npm install ejs

というわけで、カレントユーザの配下にnaveとnpmでスッキリインストールできました!