Am 26. Oktober wird sich die Node LTS-Version von Version 14 auf Version 16 verändern. Was das bedeutet, will ich im Folgenden kurz darlegen.
Was ist Node?
Node ist eine Basis-Software, um Javascript-Programme auf einem Computer laufen zu lassen. Da die Homebridge und ihre Plugins zum größten Teil in Javascript geschrieben sind, wird Node immer benötigt, damit überhaupt etwas geht.
Was bedeutet Node LTS?
LTS ist die Abkürzung für Long Time Support und bezeichnet Software-Versionen, die der Hersteller über eine längere Zeit pflegt. Das ist sozusagen die Haupt-Version von Node. Hier wird garantiert, dass alle kritischen Fehler über 30 Monate repariert werden. Der wesentliche Punkt dabei ist, dass es keine funktionalen Änderungen mehr gibt, egal was dem Hersteller einfällt, an Node noch zu schrauben. Das heißt, dass Plugins, die beispielsweise für Node 14.0 geschrieben wurden, auch unter Node 14.11.7 laufen. Der wichtige Teil der Versionsnummer ist hier die 14.
Was sind funktionale Änderungen?
Node stellt Funktionen (oder Methoden) bereit, die Programmierer benötigen, damit ihr Programmcode funktioniert. Ein Hersteller kann sich entscheiden, derartige Funktionen umzugestalten, so dass sie anders verwendet werden müssen, oder er kann sich sogar entscheiden, bestimmte Funktionen nicht weiter anzubieten. Plugins, die derartige Funktionen verwenden, würden dann im besten Fall abstürzen und im schlimmsten Fall falsche Ergebnisse liefern. Tatsächlich kommt aber kein Software-Hersteller auf die Idee, das einfach so zu machen. Solche Änderungen werden sehr lange vorher angekündigt, so dass jeder Programmierer die Möglichkeit hat, seinen Programmcode an die neuen Gegebenheiten anzupassen.
Hier kann man sehen, dass die Node-Entwickler schon lange vorher wissen, wann sie eine Version auf den Markt werfen: https://nodejs.org/en/about/releases/
Da steht beispielsweise, dass die älteste Version, die sich noch in irgendeiner Pflege befindet, die Version 12 ist, dass die Version 14 die aktive LTS-Version ist, dass in ein paar Tagen die Version 16 die aktive LTS-Version werden wird und somit die 14er-Version ablöst.
Was sagt die Versionsnummer?
Zunächst mal: die Node-Versionen, die wir benutzen sollten, haben alle gerade Nummern (10, 12, 14, 16...). Die ungraden Versionen befinden sich in der Entwicklung, sind im Test, verändern sich möglicherweise stark oder sind nicht vollständig. Gar nicht weiter beachten.
Die Node-Programmierer verwenden wie viele andere Programmierer ein System für ihre Versionsnummern. Die Versionsnummer besteht da aus drei Teilen, die durch einen Punkt getrennt sind. Die Teile haben Namen, die MAJOR, MINOR und PATCH heißen. Am Beispiel von Node 14.18.1 bedeutet das:
- 14: MAJOR. In der Version 14 hat es vielleicht manche Änderungen gegeben, die nicht kompatibel zur Version 12 sind. Damit das jeder kapiert, hat sich die erste Nummer geändert (von 12 auf 14).
- 18: MINOR. In der Version 14.18 hat es Änderungen gegeben, die aber nicht inkompatibel sind zu allen anderen 14er-Versionen. Möglicherweise wurde etwas hinzugefügt, aber auf keinen Fall wurde etwas entfernt oder in seiner Funktion verändert. Plugins für Version 14 laufen weiterhin ohne Einschränkungen.
- 1: PATCH. In der Version 14.18.0 hat es einen Programmierfehler gegeben, der ausgebügelt wurde. Auch hier laufen Plugins für Version 14 ohne Einschränkungen.
Viele Plugin-Programmierer machen es mit ihren Versionsnummern übrigens ganz genauso.
Na schön, und was hab ich jetzt davon?
Am 26. Oktober wird sich die LTS-Version von 14.x.x auf 16.x.x verändern. Alle diejenigen, die bislang ihr Node auf der neuesten LTS-Version gehalten haben, werden nun eine neue Version bekommen, die sich im MAJOR verändert hat. Eine Änderung im MAJOR kann dazu führen, dass manche Plugins nicht mehr laufen werden. Das betrifft möglicherweise Plugins, die schon lange nicht mehr von ihren Programmierern gepflegt wurden. Dass muss nicht zwingend so sein, aber es kann sein.
Was nun? Profis nehmen nun einen neuen Raspi, duplizieren darauf ihre laufende Homebridge, unterziehen sie einem Update auf die neue MAJOR-Versionen und sehen, was geht und was nicht. Typen wie ich knallen die neue Version einfach drauf und nehmen eine Unterbrechung ihrer Homebridge in Kauf. Etwas Ängstlichere machen lieber gar kein Update und begründen das mit der alten Wahrheit "never change a running system". Jede dieser Vorgehensweisen hat etwas für sich, wobei die erste und die letzte von äußerster Vorsicht zeugen und meine Holzhammer-Methode eher nicht.
Wie vorgehen?
Wichtig: niemand muss jetzt updaten. Damit kann man sich erstmal schön Zeit lassen und dem Forum lauschen. Es gibt hier im Forum einige, die bereits seit einer geraumen Zeit die Version 16 einsetzen. Man hört wenig Drama aus dieser Richtung, eigentlich gar nichts, aber vielleicht gibt es ja schlechte Erfahrungen mit dem einen oder anderen Plugin. Wär schön, wenn wir da mal was hören würden.
Update des offiziellen Homebridge-Images (auch nach Startapfel-Anleitung ab März 2021) :
- Auf dem Raspi per ssh einloggen und dort den Befehl sudo hb-service update-node eingeben. Bei Problemen kann man das Update rückgängig machen mit
sudo hb-service update-node 14.18.1
Update älterer Homebridge-Installation (nach Startapfel-Anleitung bis Ende Februar 2021) :
- Wer eine Installation hat, die manuell aufgesetzt worden ist (so wie sie die alte Smartapfel-Anleitung bis Februar 2021 beschrieb), sollte zum Update die Software n verwenden. Wenn man sie nicht schon installiert hat, dann erledigt das der Befehl:
sudo npm install -g --unsafe-perm n
Wenn man sudo n aufruft, wird einem die aktuell installierte Version angezeigt. Hat man n bereits früher verwendet, um Node-Versionen upzudaten, dann werden einem alle damit installierten Versionen angezeigt. Hier kann man ein Node-Update auf einfache Art und Weise wieder rückgängig machen, indem man mit dem Cursor auf die gewünschte Node-Version geht und dann dort die Entertaste drückt.
Das Updaten geht so:
sudo n lts (installiert die neueste Node LTS-Version)