Cygwin を使って node.js と npm をインストール

Cygwin で node.js と、node.js のパッケージ管理ツール npm をインストールしてみました。
使用した環境は以下の通りです。

node.js のビルドとインストール

node.js のビルドとインストールは、http://nodejs.org/ から node.js 0.4.0 のソース(node-v0.4.0.tar.gz)を取得し、適当なディレクトリに解凍した後、Cygwin を使って以下のコマンドを実行しれば基本的に完了します。

ビルドとインストール
$ ./configure
$ make
$ make install
・・・
$ node --version
v0.4.0

configure に失敗するようなら、Cygwin で必要なパッケージをインストールしておきます。
以下はインストールしたパッケージの例。

また、configure 時に以下のようなエラーが発生するようなら、rebaseall を実行します。

configure 時の python エラー
・・・ python ・・・ *** fatal error - unable to remap ・・・\time.dll to same address as parent: ・・・

rebaseall は cywin 関係の実行プロセスを全て終了した状態で、cmd.exe を起動し、ash で実行します。

rebaseall の実行(cmd.exe 使用)
> cd cygwin\bin
> ash
$ ./rebaseall

さらに、今回は make 時にも以下のようなエラーが発生しましたが、

make 時のエラー
・・・node-v0.4.0/deps/v8/src/platform-cygwin.cc:778:31: no newline at end of file

platform-cygwin.cc ファイルの最後に改行を加え、新しい行でファイルが終わるようにして解決しました。

deps/v8/src/platform-cygwin.cc 修正(v8::internal の後ろに改行追加)
} }  // namespace v8::internal
[EOF]

npm のインストール

npm は、http://npmjs.org/install.sh をローカルに保存して、cygwin で install.sh を実行すればインストールできます。(install.sh を正常に実行するには curl が必要な点に注意)

npm インストール
$ ./install.sh
・・・
$ npm --version
0.2.18

ちなみに、はじめは npm のソースを取得してインストールしようと思ったのですが、make や node cli.js install npm を実行した際に、以下のようなエラーが発生するのでやめました。

node cli.js install npm 時のエラー
node.js:116
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: Cannot find module 'semver'
・・・

(追記)cygwin で npm を実行するための設定

npm をインストールしただけだと npm install の実行時に DNS の TIMEOUT が発生するので、/etc/resolv.conf ファイルを作成し、Google Public DNS の IP アドレスを設定してやります。

/etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

なお、TIMEOUT の原因は、cygwin を使って node.js をビルドした際に deps/c-ares/ares_init.c で resolv.conf を使う方法が適用されるからみたいです。