FreeBSDにnode.js-0.4.3をインストール

今、話題のnode.jsを触りたい!ってことで、FreeBSDにインストールしてみました。
FreeBSDへのインストールの資料があまり見当たらなかったのでメモ。


こちらこちらに書かれている通りに。

fetch http://nodejs.org/dist/node-v0.4.3.tar.gz
tar zxfv node-v0.4.3.tar.gz
cd node-v0.4.3
export JOBS=2 # optional, sets number of parallel commands.
mkdir ~/local
./configure --prefix=$HOME/local/node
make

エラー発生です。

Error expanding embedded variable.

gmake がいいそうです。
FreeBSDでもPOCO C++ライブラリ

gmake

コンパイルエラーです。

Build failed:  -> task failed (err #2): 
	{task: libv8.a SConstruct -> libv8.a}
gmake: *** [program] Error 1

エラー内容。

/usr/home/username/node-v0.4.3/deps/v8/src/platform-freebsd.cc: In static member function 'static v8::internal::Mutex* v8::internal::OS::CreateMutex()':
/usr/home/username/node-v0.4.3/deps/v8/src/platform-freebsd.cc:535: error: cannot allocate an object of abstract type 'v8::internal::FreeBSDMutex'
/usr/home/username/node-v0.4.3/deps/v8/src/platform-freebsd.cc:504: note:   because the following virtual functions are pure within 'v8::internal::FreeBSDMutex':
/usr/home/username/node-v0.4.3/deps/v8/src/platform.h:464: note: 	virtual bool v8::internal::Mutex::TryLock()
/usr/home/username/node-v0.4.3/deps/v8/src/platform-freebsd.cc: In function 'void v8::internal::ProfilerSignalHandler(int, siginfo_t*, void*)':
/usr/home/username/node-v0.4.3/deps/v8/src/platform-freebsd.cc:607: error: 'current_state' is not a member of 'v8::internal::VMState'
scons: *** [obj/release/platform-freebsd.o] Error 1
scons: building terminated because of errors.
Waf: Leaving directory `/usr/home/akaneyuki/node-v0.4.3/build'
Build failed:  -> task failed (err #2): 
	{task: libv8.a SConstruct -> libv8.a}


よくわからないので検索してみると、同じエラーでてる方がいました。
ふにょい日記
とっても素敵なヒントへのリンクを貼られていたので参考にさせていただきました。


v8にあるパッチをあてるといいそうです。
パッチのあて方がわからないので、
node-v0.4.3/deps/v8/src/platform-freebsd.cc
に直接書き込むことに。


@@ -xxx,x +xxx,x @@
手前の -xxx は修正前の行番号
後ろの +xxx は修正後の行番号
頭に - は行削除
頭に + は行追記


と解釈して書き直しました。

gmake
...
...
...
Waf: Leaving directory `/usr/home/username/node-v0.4.3/build'
'build' finished successfully (1m21.256s)

無事ビルド成功してくれました。


後はまた、書かれている通り実行。

gmake install
export PATH=$HOME/local/node/bin:$PATH
node

と打つと動いてくれてるみたいなので、成功ってことで。