HomebridgeのNode.jsをアップデート

HomeKitを使う

Homebridgeが使うNode.jsをアップデートしました。ターミナルからhb-service update-nodeコマンドを使います。aptコマンドでインストールする通常のNode.jsとは別の場所にあるので注意です。

Node.jsが古いらしい

Intel NUCで動作しているUbuntuマシンの、Docker動作のHomebridgeで、プラグインの一つが期限切れである(新バージョンがある)というメッセージが出てました。

HomebridgeのWeb UIを担っているHomebridge Config UI-Xプラグインに、新バージョンが出ているとのことです。

そこで更新しようとしたら、Node.jsが古いと言われました。なのでNode.jsをアップデートすることにしました。このプラグインの更新は取り敢えずキャンセルします。

Node.jsバージョン確認

最近のWeb UIのバージョンでは、ターミナルを起動してNode.jsの管理ができるようです。Web UIの右上のボタンをクリックして、「ターミナル」メニューが出るようでしたら、これを選択します。

するとWebブラウザ上にターミナル画面が開きます。この最初のメッセージに、Node.jsのバージョンが表示されていました。

Web UIのバージョンなのか設定なのか、表示されないこともあります。その場合は、

node --version

とタイプすれば表示されます。現在のバージョンは、v16.16.0でした。Node.jsにインストール先は/opt/homebridge/binとのことです。

Node.jsを更新する

ターミナルには、Node.jsのアップデート方法も表示されていました。それによると、以下のコマンド

hb-service update-node

を打てば良いと書いてあります。なので、その通りをターミナルにタイプしました。

root@hoge:var/lib/homebridge $ hb-service update-node
 Updating Node.js from v16.16.0 to v18.16.0...
 Target: /opt/homebridge
 Download complete.
 Cleaned up npm at at /opt/homebridge/lib/node_modules/npm
 Installed Node.js v18.16.0
 Rebuilding for Node.js v18.16.0...
rebuilt dependencies successfully
 Rebuilt homebridge-config-ui-x for Node.js v18.16.0.
rebuilt dependencies successfully
 Rebuilt plugins in /opt/homebridge/lib/node_modules for Node.js v18.16.0.
⚠ Please restart Homebridge for the changes to take effect.

そこ結果、いろいろと再ビルドしつつ、うまい具合にアップデートしてくれたようです。一般的に、Node.jsを最新版に更新する方法は、何種類もあると思います。でもHomebridgeのNode.jsに対しては、このコマンドを使って更新するのが無難だと思います。最後の行の指示通りHomebridgeをリスタートすると、

Node.jsがv18.16.0にアップデートされていました。

プラグインも、今度は警告なしで、いつものように更新できました。

RPiのNode.jsも更新する

ここまでは、PCのUbuntuでDocker動作しているHomebridgeの例でしたが、Web UIのターミナルから更新すれば、どのHomebridgeも同様に更新できます。Raspberry Pi 4 (RPi) にPi Imagerを使ってインストールしたHomebridgeでも、Node.jsのアップデートを試しました。こちらもWeb UIのターミナルから

hb-service update-node

のコマンドを打ち込むことで、同様にNode.jsの更新が可能でした。このコマンドは、RPiにsshで接続しても実行可能でした。ただし、sudoで起動する必要があります。

sudo hb-service update-node

この後、パスワードを聞かれ、Node.jsの更新が行われます。

その他のhb-serviceコマンド

オプション無しでhb-serviceを起動すると、以下のようにサブコマンドの説明が表示されます。update-node以外に、Homebridgeをメンテナンスするための色々なコマンドがあります。

$ hb-service
Usage: hb-service [options] [install|uninstall|start|stop|restart|rebuild|run|logs|view|add|remove]

Options:
-P, --plugin-path <path> 
-U, --user-storage-path <path> 
-S, --service-name <service name> The name of the homebridge service to install or control
-T, --no-timestamp 
--strict-plugin-resolution 
--port <port> The port to set to the Homebridge UI when installing as a service
--user <user> The user account the Homebridge service will be installed as (Linux, FreeBSD, macOS only)
--group <group> The group the Homebridge service will be added to (Linux, FreeBSD, macOS only)
--stdout 
--allow-root 
--docker 
--uid <number> 
--gid <number> 
-v, --version output the version number
-h, --help display help for command

The hb-service command is provided by homebridge-config-ui-x

Please provide a command:
install install homebridge as a service
uninstall remove the homebridge service
start start the homebridge service
stop stop the homebridge service
restart restart the homebridge service
add <plugin>@<version> install a plugin
remove <plugin>@<version> remove a plugin
rebuild rebuild ui
rebuild --all rebuild all npm modules (use after updating Node.js)
run run homebridge daemon
logs tails the homebridge service logs
view views the homebridge service logs for 30 seconds
update-node [version] update Node.js

See the wiki for help with hb-service: https://homebridge.io/w/JTtHK

hb-serviceコマンドは、Web UIであるhomebridge-config-ui-xの一環として用意されたコマンドのようです。

Node.jsが2つある

RPiにssh接続して確認したところ、Homebridgeの使用するものとは別のNode.jsがインストールされていました。/usr/binに置かれたnodeで、こちらにパスが通ってます。バージョンは古いようです。

$ which node
/usr/bin/node
$ node -v
v16.20.0
$ /opt/homebridge/bin/node -v
v18.16.0

実はRPiでも、Pi ImagerでHomebridgeをインストールした直後には、/opt/homebridge/binのnodeしかインストールされてなく、パスも通っていません。Dockerでのインストールと同様です。ここに現れた/usr/binのnodeは、こちらの手順でZigbee2MQTTをインストールしたときに、

sudo apt install -y nodejs git make g++ gcc

というaptコマンドで導入されたものです。なので、主にZigbee2MQTTが使用していることになります。Node.jsが複数インストールされているのは良くないという話を聞いたこともあります。でもそれぞれの用途を把握しておけば良いかと思い、このままにしておくことにしました。

まとめ

Homebridgeが使用するNode.jsの更新をしました。Node.jsを更新する方法は多数あると思いますが、hb-serviceコマンドを使って更新するのが適切かと思われます。Homebridgeが使用するNode.jsは、/opt/homebridge/binの中にあります。aptコマンドなどでNode.jsをインストールすると/usr/binにインストールされるので、それぞれを管理する必要があると思います。

コメント

タイトルとURLをコピーしました