node.jsを入れてる際にエラーが出てハマった
node.jsをnvmや実際にパッケージを落としてきてmakeすると以下のようなエラーが出た
Build failed: -> task failed (err #1): {task: cxx_link node_main_5.o,node_5.o,node_buffer_5.o,node_javascript_5.o,node_extensions_5.o,node_http_parser_5.o,node_constants_5.o,node_file_5.o,node_script_5.o,node_os_5.o,node_dtrace_5.o,node_string_5.o,node_zlib_5.o,timer_wrap_5.o,handle_wrap_5.o,stream_wrap_5.o,tcp_wrap_5.o,udp_wrap_5.o,pipe_wrap_5.o,cares_wrap_5.o,tty_wrap_5.o,fs_event_wrap_5.o,process_wrap_5.o,v8_typed_array_5.o,node_signal_watcher_5.o,node_stat_watcher_5.o,node_io_watcher_5.o,platform_darwin_5.o,node_crypto_5.o,http_parser_3.o -> node}
で、最初の方に以下のようなメッセージが出てきてたので、何かしらライブラリが足りないのかな、
と思っていた
Checking for program g++ or c++ : /Developer/usr/bin/g++ Checking for program cpp : /Developer/usr/bin/cpp Checking for program ar : /Developer/usr/bin/ar Checking for program ranlib : /Developer/usr/bin/ranlib Checking for g++ : ok Checking for program gcc or cc : /Developer/usr/bin/gcc Checking for gcc : ok Checking for library dl : yes Checking for openssl : yes Checking for library util : yes Checking for library rt : not found <- Checking for fdatasync(2) with c++ : no <-
結論から言うと、
これらのライブラリは自分の場合には関係がなく、opensslのversionの問題だった
自分の場合で解決したのは
1)Macportsのversionを上げる
2)Macportsでインストールしたものを全てアンインストール
3)brewでopensslで入れる※恐らくだけど、node.jsをビルドする時に使ったopensslのバージョンがMacportsで入れた古いものと結びついてしまっていたようである
http://dolias.jugem.jp/?eid=581
こういった事例があるので、opensslが原因になる場合があるようだった。
自分の場合はMacportsで入れたopensslのバージョンが古いものだったらしい
自分のマシンはOSがLeopardの時に買ったもので、SnowLeopardに上げたときに
portコマンドが変なエラーを吐いていて、かつhomebrewが流行ってたっぽいし、インストールも簡単だったので、放置してしまっていた。
具体的な手順としては、
1)Macportsの新しいバージョンのインストール
http://distfiles.macports.org/MacPorts/
ここにGUIでも入るのがあるからこれの方が楽だと思う
2)Macportsで入れたパッケージを全てアンインストール
$sudo port -f uninstall installed
3)brewで新しくopensslを入れなおす
$ brew install openssl
その後
$nvm install v0.6.0
とかやれば入ると思う。
自分のようにLeopardからSnowLeopardにアップグレードしてなんにもしてない人はこういう場合で解決するかもしれない。