読者です 読者をやめる 読者になる 読者になる

Raspberry Pi に Node.js をインストールしてみる。

Raspberry Pi に Node.js をインストール

先日、IoTあるじゃん名古屋支部の定例会に行ったときに参加していたくぅさんとNode.jsのインストールをやったのですが、少し苦労したので手法をメモっておきます。

ALGYAN名古屋支部 | Doorkeeper

RaspberryPiにデフォルトで入っているNode.jsはかなり古いもの(v0.10.29)になっているので、最近のモジュールなどをインストールしようと思ってもうまくいかないことが多いです。 今回行いたかったのはAzure Iot Hub SDKですが、作業中npm installの段階でにもっとバージョン上げろというメッセージがでます。

例えば、Azure-iot-sdkでは以下の様な表記がされています。

Ensure that Node.js version 0.12.x or later is installed. Run node --version at the command line to check the version. For information about using a package manager to install Node.js on Linux, see Installing Node.js via package manager.

v0.12以上が必要の様です。

github.com

そこでNode.jsをバージョンアップすることになるのですが、Node.jsはバージョンアップのペースが早過ぎるのでバージョン管理ツールをインストールすることになります。これがあれば、かなり容易にNode.jsのバージョンを変更することができます。

nvm(node version manager)をインストールする

nvm(node version manager)はNode.jsのバージョン管理ツールです。

github.com

インストールは次のようにします。

~ $ git clone git://github.com/creationix/nvm.git ~/.nvm

nvmをユーザのローカルフォルダにcloneしたので、このままではフルパスで実行しないといけないので以下のシェルを実行すると便利です。nvmの弱点はユーザーのローカル環境での設定なので全ユーザがインストールの恩恵に与れないことですがRaspberryPiであれば問題ないかと。

~ $ source ~/.nvm/nvm.sh

nvmを使うときには毎回このコマンドを打ち込む必要があるので、面倒な場合には以下を.bashrcに突っ込んでおくと幸せかもしれません。ただし、これはログイン中に実行時間がかかるのでレスポンスが相当悪くなりますのでご注意ください。(多分予想以上です)

if [[ -f ~/.nvm/nvm.sh ]]; then
  source ~/.nvm/nvm.sh
fi

.bash_profileでも良いかも?)

nvmから利用できるNode.jsのバージョンを一覧表示してみます。

~ $ nvm ls-remote
        v0.1.14
        v0.1.15
        v0.1.16
(中略)
         v6.1.0
         v6.2.0
         v6.2.1

こんな感じで使用可能なバージョンを一覧表示できます。 この中から使用したいバージョンをインストールすることになります。 個人的にはLTSなバージョンとしたいところでしたが、くぅさんはチャレンジャーなので 最新版をインストールしていました。ちなみに現在のLTSなバージョンは4.4.4になります。

~ $ nvm install v6.2.1
Downloading https://nodejs.org/dist/v6.2.1/node-v6.2.1-linux-armv6l.tar.xz...
######################################################################## 100.0%
Now using node v6.2.1 (npm v3.9.3)

これでインストールは終了です。おめでとうございます。

インストールされているかを調べてみます。バージョンスイッチをつけて確認します。

~ $ node -v
v6.2.1
~ $ npm -v
3.9.3

無事にインストールされているようです。

使用するバージョンを変更する

nvmは簡単にNode.jsのバージョンを変更することができます。そのため、くぅさんには悪いのですがLTSバージョンに変更してみます。

~ $ nvm use v4.4.4
Now using node v4.4.4 (npm v3.8.9)
~ $ node -v
v4.4.4
~ $ npm -v
3.8.9

無事にv4.4.4になっています。

念のため、デフォルトで使用するバージョンを設定しておきます。

~ $ nvm alias default v4.4.4
default -> v4.4.4

このように設定をするとRaspberryPiを再起動などをしたときに、デフォルトに設定したバージョンが使用できるようになります。

(疑問)デフォルトで入っていたNode.jsはどうなっているんだろうか・・・