ARMv6のサポート終了
2019年4月頃、Node.jsのVer.12のリリースとともにARMv6のビルドが提供されなくなりました。ARMv6を使うデバイスはだいぶ少なくなりましたが、ここにありますよ!Zero WHが!!
RFC: Consider retiring the PI1s ARMv6 (downgrading support to "experimental") · Issue #1677 · nodejs/build · GitHub
どうやら非公式ビルドというものを用意してくれているようです。ありがたや。
Node.js unofficial-builds project
Node.js Unofficial Builds Project
GitHub - nodejs/unofficial-builds: Unofficial binaries for Node.js
非公式ビルドはhttps://unofficial-builds.nodejs.org/download/release/v14.3.0/
以下にあるようです。最新ビルドを見ると公式と比べて数時間差でしょうか。誤差ですね!
手動でインストール
まず初めに公式最新リリースで最新バージョンを確認 (もしかしたら都合悪く最新バージョンがビルドされていないかもしれないので、非公式Releaseを要確認。)
VERSION=v14.3.0
DISTRO=linux-armv6l
wget https://unofficial-builds.nodejs.org/download/release/$VERSION/node-$VERSION-$DISTRO.tar.xz
意外と時間かかります。終わったら、解凍。
sudo mkdir-p /usr/local/lib/nodejs
sudo tar-xJvf node-$VERSION-$DISTRO.tar.xz -C /usr/local/lib/nodejs
適当なエディタで~/.profile
に追記
# NodejsVERSION=v14.3.0
DISTRO=linux-armv6l
export PATH=/usr/local/lib/nodejs/node-$VERSION-$DISTRO/bin:$PATH
.profile
の再読み込み
. ~/.profile
これで完了。
参照: Installation · nodejs/help Wiki · GitHub
アップデートの仕方
毎回これやるのはダルいし、作業ゲーがアホらしいのでアップデート方法の模索。
ちょっと調べるとn
というパッケージがあるが、最新バージョンを聞くとやっぱり公式ビルドの11.15.0を返す始末。当たり前だが。
となると自分で作るしかない。うん、そうしよう。
#!/bin/sh. ~/.profile
old=`node -v`echo"現在のNode.jsのバージョンは$oldです"ver=''if[$# -eq 1 ];then
ver="v$1"if[$ver=$old];then
echo"Node.js($ver)が既にインストールされています"return 0
fi
else
ver=`wget -qO- https://nodejs.org/dist/latest/ | sed-nE's|.*>node-(.*)\.pkg</a>.*|\1|p'`if[$ver=$old];then
echo"Node.js($ver)は最新です"return 0
fi
fi
wget https://unofficial-builds.nodejs.org/download/release/$ver/node-$ver-$DISTRO.tar.xz
if[!-e node-$ver-$DISTRO.tar.xz ];then
return 1
fi
if[-d /usr/local/lib/nodejs ];then
sudo rm-r /usr/local/lib/nodejs
fi
sudo mkdir-p /usr/local/lib/nodejs
sudo tar-xJvf node-$ver-$DISTRO.tar.xz -C /usr/local/lib/nodejs
sed-i-e"s/VERSION=$VERSION/VERSION=$ver/g" ~/.profile
rm node-$ver-$DISTRO.tar.xz
. ~/.profile
echo"Node.js: $old -> `node -v`"
これを実行するだけで常にlatestに更新されます。LTSとかは考慮してませんorz
source update-nodejs.sh
引数にバージョンを入れると無理やりそのバージョンに移行します。が、非公式ビルドにあれば、です。
source update-nodejs.sh 14.0.0
定期実行させる
どんなバグでも仕様変更でもかかってこいって人はCronに入れるとよいでしょう。ただ頻度はほどほどに。
中でsudoとか使ってたり環境変数変えてたりして割と雑なスクリプトなのでCronでの動作保証はしません。というかシェルスクリプト書いたの数回目なのでツッコミ大歓迎です。Cronは試してみたら追記します。