Raspberry PiでIoTなシステム開発:nodeのインストールが楽になった

Raspberry PiでIoTなシステム開発: Raspberry Pi にバイナリでNode.jsをインストールしばらく前に公式サイトからnodeのARM用バイナリが提供されなくなり、ネットでバイナリを探してインスト−ルをしていました。が、遂に公式でのARM用バイナリの配布が再開されたようです。それもv6/v7/v8も、4系も5系もとう大盤振る舞い。[pi@raspberrypi:~ $ curlcurl: try ‘curl –help’ or ‘curl –manual’ for more informationpi@raspberrypi:~ $ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 7766 100 7766 0 0 3738 0 0:00:02 0:00:02 –:–:– 3740=> Downloading nvm from git to ‘/home/pi/.nvm’=> Cloning into ‘/home/pi/.nvm’…remote: Counting objects: 4402, done.remote: Compressing objects: 100% (3/3), done.remote: Total 4402 (delta 0), reused 0 (delta 0), pack-reused 4399Receiving objects: 100% (4402/4402), 1.10 MiB | 562.00 KiB/s, done.Resolving deltas: 100% (2582/2582), done.Checking connectivity… done.* (detached from v0.31.0) master=> Appending source string to /home/pi/.bashrc=> Close and reopen your terminal to start using nvmpi@raspberrypi:~ $ nvm-bash: nvm: command not found


パスが反映されていないようで、そのままだと実行できません。sourceすればいいと思いますが、ここはログインしなおしました。

pi@raspberrypi:~ $ nvmNode Version ManagerNote: refers to any version-like string nvm understands. This includes: - full or partial version numbers, starting with an optional ““v”” (0.10, v0.1.2, v1) - default (built-in) aliases: node, stable, unstable, iojs, system - custom aliases you define with nvm alias fooUsage: nvm help Show this message nvm –version Print out the latest released version of nvm nvm install [-s] Download and install a , [-s] from source. Uses .nvmrc if available –reinstall-packages-from= When installing, reinstall packages installed in <node|iojs|node version=“” number=“> nvm uninstall Uninstall a version nvm use [–silent] Modify PATH to use . Uses .nvmrc if available nvm exec [–silent] [] Run on . Uses .nvmrc if available nvm run [–silent] [] Run node on with as arguments. Uses .nvmrc if available nvm current Display currently activated version nvm ls List installed versions nvm ls List versions matching a given description nvm ls-remote List remote versions available for install nvm version Resolve the given description to a single local version nvm version-remote Resolve the given description to a single remote version nvm deactivate Undo effects of nvm on current shell nvm alias [] Show all aliases beginning with nvm alias Set an alias named pointing to nvm unalias Deletes the alias named nvm reinstall-packages Reinstall global npm packages contained in to current version nvm unload Unload nvm from shell nvm which [] Display path to installed node version. Uses .nvmrc if availableExample: nvm install v0.10.32 Install a specific version number nvm use 0.10 Use the latest available 0.10.x release nvm run 0.10.32 app.js Run app.js using node v0.10.32 nvm exec 0.10.32 node app.js Run node app.js with the PATH pointing to node v0.10.32 nvm alias default 0.10.32 Set default node version on a shellNote: to remove, delete, or uninstall nvm - just remove the $NVM_DIR folder (usually ~/.nvm)pi@raspberrypi:~ $ nvm –version0.31.0</node|iojs|node>


バージョンもヘルプも表示されます。さっそくnvmを使ってnodeをインストールします。「5系の最新」という指定の方法が分かりませんでしたのでバージョン番号を指定しました。ヘルプからするとv5と指定するだけでよかったんでしょうか。

pi@raspberrypi:~ $ node > console.log(““hello world”“);hello worldundefined> (To exit, press ^C again or type .exit)>


ちゃんとJavascriptを解釈してくれたようです。インストールパスを知りたかったのですが、nvmのコマンドでは分からないようでした。findして実体を探してみると、piでインストールしているのでpiのホームに入るのですね。当たり前か。

pi@raspberrypi:~ $ nvm ls-> v5.7.1default -> v5.7.1node -> stable (-> v5.7.1) (default)stable -> 5.7 (-> v5.7.1) (default)iojs -> N/A (default)pi@raspberrypi:~ $ find ~/ -name ““node”” -ls125874 4 drwxr-xr-x 2 pi pi 4096 Mar 4 09:40 /home/pi/.nvm/test/installation/node129143 4 drwxr-xr-x 3 pi pi 4096 Mar 4 09:43 /home/pi/.nvm/versions/node128984 4 drwxr-xr-x 2 pi pi 4096 Mar 3 07:16 /home/pi/.nvm/versions/node/v5.7.1/share/doc/node128988 22080 -rwxr-xr-x 1 pi pi 22608862 Mar 3 07:16 /home/pi/.nvm/versions/node/v5.7.1/bin/node128992 4 drwxr-xr-x 4 pi pi 4096 Mar 3 07:17 /home/pi/.nvm/versions/node/v5.7.1/include/nodepi@raspberrypi:~ $ find ~/ -name ““nvm.sh”” -ls124544 72 -rwxr-xr-x 1 pi pi 72916 Mar 4 09:40 /home/pi/.nvm/nvm.sh


よし、次はnpmのインストールだ!と意気込んだのですが、既にインストール済みでした。nodeと一緒に入るのですね。osxでインストーラーを実行した時みたい。

pi@raspberrypi:~ $ sudo nvmsudo: nvm: command not found


スーパーユーザーの環境変数にpiへのパスを追加してもいいのだと思いますが、非特権ユーザーへのパスを通すのもなんだかおかしな感じです。そこでグローバルにnvmをインストールしてみることにしました。同じ事を考える人はいるもので、パッケージ化してくれています。[GitHub – xtuple/nvm: Easily setup NVM globally for rooted, multi-user, or CI environments]()

pi@raspberrypi:~ $ sudo nvm install v5######################################################################## 100.0%Checksums emptyNow using node v5.7.1pi@raspberrypi:~ $ lsinit-functions kt node_modules ts wiringPipi@raspberrypi:~ $ ls -laFtotal 100drwxr-xr-x 8 pi pi 4096 Mar 5 09:10 ./drwxr-xr-x 3 root root 4096 Feb 2 20:52 ../-rw——- 1 pi pi 20462 Mar 5 09:05 .bash_history-rw-r–r– 1 pi pi 220 Mar 4 17:42 .bash_logout-rw-r–r– 1 pi pi 3610 Mar 4 17:42 .bashrcdrwx—— 3 pi pi 4096 Mar 5 08:43 .config/-rw-r–r– 1 pi pi 6148 Mar 5 07:19 .DS_Store-rw-r–r– 1 pi pi 362 Mar 4 17:42 .ftpconfig-rwxr-xr-x 1 pi pi 11506 Mar 4 17:44 init-functions*drwxr-xr-x 3 pi pi 4096 Feb 11 22:54 kt/drwxr-xr-x 2 pi pi 4096 Mar 5 08:38 node_modules/-rw-r–r– 1 pi pi 27 Mar 4 17:42 .node_repl_historydrwxr-xr-x 253 pi pi 12288 Mar 5 08:42 .npm/-rw-r–r– 1 pi pi 675 Mar 4 17:44 .profiledrwxr-xr-x 4 pi pi 4096 Mar 5 08:46 ts/drwxr-xr-x 10 pi pi 4096 Feb 11 11:43 wiringPi/pi@raspberrypi:~ $ node -vv5.7.1pi@raspberrypi:~ $ sudo node -vv5.7.1


(2016/03/05 更に問題発生で更に追記)npmでインストールしたコマンド(ここではtypings)を実行しようとしたら、not foundになりました。ユーザー領域にインストールした場合には最初からパスが通っていたのですが、グローバルインストールだと自分で設定しないといけないようです。piのために設定する場合はこのとおり。

pi@raspberrypi:~ $ sudo nano /etc/profile


途中の所のパスの設定部分でもいいと思いますが、追記したことがわかりやすいように末尾にしました。

pi@raspberrypi:~ $ sudo visudopi@raspberrypi:~ $ sudo sh -c ‘echo $PATH’/usr/local/nvm/v5.7.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binpi@raspberrypi:~ $ sudo typingsUsage: typings Commands: bundle, i, in, init, install, la, list, ll, ls, r, remove, rm, search, uninstalltypings -h Get help for typings –no-insight Disable insights for typings –version Print the CLI versiontypings –cache Print the path to the cache directorytypings@0.6.9 /usr/local/nvm/v5.7.1/lib/node_modules/typings


visudoではsecure_pathのところにパスを追記しています。

“””

現在インストールする場合

本文のNode.js 4・5系、nvm 0.31.0は当時の導入記録です。これらのNode.jsはサポート終了済みなので、現在は公式のリリース状況と対象CPU・OSの対応を確認します。nvmは通常ユーザーごとに導入するシェル関数であり、sudo nvmが一般的な使い方ではありません。サービス起動時は対象ユーザーとNode.js実体のパスを明示します。