ARMマシンでNode.js
Node.jsを使ってのアプリの書き方に少し慣れてきたので、最終的なターゲットであるARMマシンでも動かしてみようかと思ったら、少しハマッた。
nvmを使ってインストール
x86マシンと同様に、単純に nvm installすればインストールはされる。一応、安定版と呼ばれているv0.10.xの最新版を入れることにする。
# nvm install v0.10.16
"バイナリが無いからソースからインストールするよ"的なメッセージが表示され、Node.js自体のコンパイルが始まる。
コンパイル自身は特に問題なく終了し、nodeコマンドがインストールされるが、実行しようとすると、Segmentation fault で落ちてしまう。どうも、v0.10.xはARMマシンではうまく動かないらしい。ちなみに、試した環境は Debian wheezy armhf 環境。
pcDuino Segmentation fault · Issue #4946 · joyent/node · GitHub
↑のリンク先では、v.0.11.2-preだと動くよと書いてある気がするので、v0.11.xの最新版v0.11.6で試してみたら、うまく動いてくれた。
ちょっと気になったRaspberry Pi対応
nvmでは、Raspberry Pi用のバイナリが用意されているらしく、Ras Piの場合はそれをインストールしようとする。ただ、その判定処理がちょっとイケてない。
~/nvm/nvm.shの一部
# Try to figure out the os and arch for binary fetching
local os=
local arch="$(uname -m)"
case "$uname" in
esac
case "$uname" in
*i*86*) arch=x86 ;;
*armv6l*) arch=arm-pi ;;
esac
この処理だと、ARM11等armv6アーキテクチャのCPUを積んでるボードはRas Piだと誤認識されるんじゃないかな。せめて、uname -nで判別すればいいのに。と思ったが、v0.10.xやv0.11.xはそもそもRas Pi用のバイナリが用意されてないようなので、結局ソースから入れることになるので、あんまり関係ないなと思ったり。