Raspberry PiにNode.jsとnpmの最新版をインストールする


Raspberry Piでapt-getで入れたnpmを使っていて、@type/node などのTypeScriptのtypesパッケージを npm install しようとすると、 npm ERR! 404 'types/node' is not in the npm registry. のようなエラーが出てしまいました。
typesパッケージはnpm 3.xからサポートされているそうですが、記事投稿時(2017/07/23)にapt-getで入れたnpmのバージョンは1.4.21でした。

Raspbian
pi@raspberrypi:~ $ npm -v
1.4.21

また、npm 5.2.0からはnpxというローカルパッケージを手軽に実行できるコマンドが用意されたりしています。
npm 5.2.0の新機能! 「npx」でローカルパッケージを手軽に実行しよう

今回の記事では、Node.jsの最新版(正確には、Stable, LTS, Latestなど)とnpmの最新版を手軽にインストールできる方法を紹介します。

動作環境

  • Raspberry Pi 3 Model B, Raspberry Pi Zero W
    • Raspbian Jessie Lite 2017-07-05
    • Raspbian Stretch Lite 2017-09-07
      • イメージをMicroSDに書き込んだ後、MicroSDのルートディレクトリにsshという名前で空のファイルを作成

インストール

まず、SSH接続をしておきます(Raspberry PiとMac or Windows PCを有線で直接繋いでさくっとSSH接続するなどを参照)

Raspbian
sudo apt-get update
sudo apt-get install -y nodejs npm
sudo npm cache clean
sudo npm install npm n -g
sudo n stable

または、Gistにアップロードしたファイルを利用し、

Raspbian
curl -L https://git.io/v7kPb | bash

sudo n stable の部分を sudo n lts に変更すれば、Node.jsのLTS版(長期サポート版)がインストールされます

記事投稿時(2017/07/23)、Raspberry Pi Zero WではCPUがARMv6系であることに起因すると思われるエラーが出ておりました。
sudo n stableError: invalid version 8.6.0 といったエラーが出る場合は、 n ls
を実行して利用可能なバージョンを調べ、 sudo n 8.5.0 (8.6.0の前のバージョン)や sudo n lts を実行してみてください。

インストール後、バージョンの確認とパスが通っているかを確認します

Raspbian
pi@raspberrypi:~ $ node -v
v8.6.0
pi@raspberrypi:~ $ npm -v
5.4.2

(2017/08/01追記)
Raspberry Pi Zero Wにおいて、Error: invalid version 8.2.1 が出る時期がありましたが、Node.jsの v8.2.1 がインストールできるようになっていました

(2017/10/08追記)
Raspberry Pi Zero Wにおいて、Error: invalid version 8.6.0 が出ていました。このような場合は、上記のように sudo n 8.5.0 などを実行してみてください。
また、古いバージョンのnpmが入ってしまった場合は、sudo npm install npm -g を実行してみてください。

参考サイト

第三回 Raspberry Pi 3に最新のNode.jsをインストールする