Node.js und npm Update auf Raspberry Pi mit Homebridge (so Klappt´s auf alle Fälle)

  • Danke für deinen ausführlichen Beitrag und die Tipps!

    Ich empfehle die Verwendung von n. Nach einer Installation von Node kann das installiert werden mit dem Befehl sudo npm install -g --unsafe-perm n. Danach ruft man's mit dem leicht zu merkenden Befehl sudo n auf.

    Ich kannte die Anleitung zu n hier vorher gar nicht – werde ich in Zukunft dann mal so probieren, vielen Dank!

    Auch ganz nett ist npm-check, das mit dem Befehl sudo npm-check -gu eine interaktive Shell zur Node-Modules-Pflege anbietet, sozusagen sudo npm outdated -g in Schön.

    Danke – werde ich mir ansehen!

    Um den Node-Installer npm kümmere ich mich gar nicht, außer er fängt an, Mist zu bauen, weil er zu alt ist. Ich benutze einfach immer das npm, das die Node-Installation mitliefert. Oft genug habe ich npm auch gar nicht updaten können und dann heißt es bei mir nach kurzer Zeit: "mir doch egal".

    Okay – grundsätzlich natürlich auch ein Ansatz, wenn man npm einfach nur immer über die node lts Version aktualisiert. Werde ich in Zukunft wohl auch so machen! Sonst bin ich grundsätzlich ein Freund davon, Updates möglichst bald einzuspielen (schließlich werden Lücken geschlossen, v.a. auch Sicherheitslücken, ...).


    Allerdings ist dann meine Frage, wie ich die Plugins aktualisiere? Muss ich dann jedes Mal nach dem Update von node/npm über n manuell erst die veralteten Plugins anzeigen lassen und dann jedes einzeln aktualisieren? Also:

    Code
    sudo npm outdated -g
    sudo npm cache clean -f
    sudo npm install -g [email protected]
    sudo npm install -g [email protected]
    sudo npm install -g [email protected]

    Denn wenn ich einfach sudo npm update -g laufen lasse und es ein Update für npm gibt (was darüber ja auch gefunden wird), dann wird es wohl wieder ein Problem mit dem Update für npm geben und meine Homebridge-Installation zerschieden. Wie aktualisierst du in deiner Routine die Plugins, oder nutzt du die grafische Oberfläche im Browser? Ich bin eigentlich über alles froh, was ich gleich im Terminal mit erledigen kann.


    Edit: Ggf. kann ich mir die letzte Frage selbst beantworten: Wenn ich npm-check nutze, dann sollte ich damit doch auch die Homebridge Plugins aktualisieren können (und npm einfach auslassen, da man damit ja auswählen kann, was aktualisiert werden soll und was nicht), richtig?

    Einmal editiert, zuletzt von ModelB+ ()

  • Allerdings ist dann meine Frage, wie ich die Plugins aktualisiere? Muss ich dann jedes Mal nach dem Update von node/npm über n manuell erst die veralteten Plugins anzeigen lassen und dann jedes einzeln aktualisieren?

    Nein. Es könnte theoretisch sein, dass wir das machen müssen, wenn es von Node 16 auf Node 18 geht, aber sonst musst du das nicht. Ich rechne auch nicht wirklich damit, dass es beim Wechsel auf Node 18 (in zehn Monaten!) nötig ist.


    Ich mach einfach nur das Node-Update, starte die Homebridge und homebridge-config-ui-x neu und falle danach wieder in meinen normalen Schlummermodus.

    Wie aktualisierst du in deiner Routine die Plugins, oder nutzt du die grafische Oberfläche im Browser? Ich bin eigentlich über alles froh, was ich gleich im Terminal mit erledigen kann.

    Die gesamte Plugin-Verwaltung mache ich nur noch über homebridge-config-ui-x, das ist einfaches Click & Go. Ich bin auch ein großer Fan vom Terminal, aber im Browser geht das Updaten der Homebridge und der Plugins doch deutlich bequemer. Die Oberfläche macht dabei nichts anderes als du im Terminal.

    Edit: Ggf. kann ich mir die letzte Frage selbst beantworten: Wenn ich npm-check nutze, dann sollte ich damit doch auch die Homebridge Plugins aktualisieren können (und npm einfach auslassen, da man damit ja auswählen kann, was aktualisiert werden soll und was nicht), richtig?

    Ich weiß es nicht genau, aber ich nehme an, das npm-check letztendlich auch wieder nur npm aufruft.

  • Ich mach einfach nur das Node-Update, starte die Homebridge und homebridge-config-ui-x neu und falle danach wieder in meinen normalen Schlummermodus.

    Die gesamte Plugin-Verwaltung mache ich nur noch über homebridge-config-ui-x, das ist einfaches Click & Go.

    Alles klar, dann werde ich mir das wohl auch angewöhnen – Danke!


    Über sudo n lts wird mir übrigens 10.24.1 angeboten statt 16.13.1. Das scheint also hier nicht so zu funktionieren – trotzdem bin ich jetzt schlauer, vielen Dank an alle ;)

  • Über sudo n lts wird mir übrigens 10.24.1 angeboten statt 16.13.1.

    Weil das wohl ein alter Raspi ist, oder?

  • Die letzte offizielle Version für armv6 ist halt 10.24.1.

  • Den Node Thread mal wieder hochgewürgt. Danke der erfolgreichen Nutzung von hb-service in der Vergangenheit, hatte ich damit eigentlich nicht mehr gerchnet. 😅


    Mein Problem. "Updating Node.js from v16.18.0 to v18.12.0..."

    ✖ Your version of Linux does not meet the GLIBC version requirements to use this tool to upgrade Node.js. Wanted: >=2.28. Installed: 2.24


    Tja.. und nun am Ende mit Node 16.18.9 auf meinem Pi 3B+ und Debian Strecht?🤷‍♂️

    sschuste weiß bestimmt zu kommentieren. ☺️

    Hilfreich?

  • Vielleicht versuchst du es erst mal mit einem Update des Betriebssystems:

    sudo apt-get update

    sudo apt-get upgrade


    Danach machst du dann noch mal das Update von Node.

  • Danke. Das hat leider keinen Erfolg gebracht. Selbe Meldung.

    ℹ Updating Node.js from v16.18.0 to v18.12.0...

    ✖ Your version of Linux does not meet the GLIBC version requirements to use this tool to upgrade Node.js. Wanted: >=2.28. Installed: 2.24

    Hilfreich?

  • Danke. Das hat leider keinen Erfolg gebracht. Selbe Meldung.

    ℹ Updating Node.js from v16.18.0 to v18.12.0...

    ✖ Your version of Linux does not meet the GLIBC version requirements to use this tool to upgrade Node.js. Wanted: >=2.28. Installed: 2.24

    Du must mind auf Debian buster upgraden - stretch ist zu alt


    Das geht nicht mit einem simplen apt-get upgrade

    Aber da gibt es auch Anleitungen im Netz…

  • Kann nur nochmal bestätigen, was LarryL gesagt hat, Node.js 18 setzt glibc 2.28 voraus, was es nur mit Debian 10 (Buster) gibt, für Debian 9 (Stretch) ist dann mit der letzten 16er Node Version Schluss.


    https://github.com/nodejs/node/releases/tag/v18.0.0


    Prebuilt binaries for Linux are now built on Red Hat Enterprise Linux (RHEL) 8 and are compatible with Linux distributions based on glibc 2.28 or later, for example, Debian 10, RHEL 8, Ubuntu 20.04.

    Grund dafür ist, dass man bei der Entwicklung von Node.js 18 auf RHEL 8 statt RHEL 7 gesetzt hat, denn der "End-of-Life" Stichtag für RHEL 7 (30. Juni 2024) liegt vor dem "End-of-Life" Datum von Node.js 18 (April 2025) und man wollte hier zum Ende hin von Node.js 18 keine Änderungen/Anpassungen mehr vornehmen müssen. Also ging man jetzt schon auf RHEL 8, welches dann minimum glibc Version 2.28 voraussetzt.


    doc: update minimum glibc requirements for Linux

    Starting with Node.js 18 we have moved building the release binaries from being built on CentOS 7/RHEL 7 to being built on RHEL 8 as the End-of-Life date of CentOS 7/RHEL 7 is before the End-of-Life date of Node.js 18 and we do not want to have to make a disruptive change towards the end of Node.js 18's life cycle.


    Moving to RHEL 8 has raised the glibc version being linked against (2.28). The official Node.js Linux release binaries will only run on Linux distributions with a matching or higher version of glibc.


    Heißt für euch, ihr habt noch eine "Schonfrist" bis September 2023, wo NodeJS 16 unterstützt wird. Ab dann sollte man über ein Upgrade auf Debian Buster nachdenken.


    Homebridge (and verified plugins) support all current Active and Maintenance LTS releases of Node.js.


    At the time of writing, this means we will support:


    • Node.js 12.x until April 2022
    • Node.js 14.x until April 2023
    • Node.js 16.x until September 2023
    • Node.js 18.x until April 2025

    4 Mal editiert, zuletzt von Patrick_ ()

  • So, ich habe jetzt einmal nach dieser Anleitung den Update von "Stretch" auf "Buster" durchgeführt.


    https://devdrik.de/upgrade-stretch-auf-buster/


    Wichtig: Wenn man deconz laufen hat, muss man auch dafür die Quellen auf Buster setzen. Geht analog wie in "Paketquellen neu setzen" beschrieben.


    Ansonsten ist das Ganze in einer guten Stunde problemlos durchgelaufen. Danach klappt dann auch der Update auf Node 18.12.0.


    Versteht sich von selbst: Bei so einem tiefen Eingriff in den Maschinenraum unbedingt vorher ein Backup das kompletten Raspi Image erstellen !!

  • So, ich habe jetzt einmal nach dieser Anleitung den Update von "Stretch" auf "Buster" durchgeführt.


    https://devdrik.de/upgrade-stretch-auf-buster/

    Bei mir gab es unzählige Fehlermeldungen und am Ende, auch nach Reboot, zeigt mir die Version noch immer an.

    Seltsam dabei, sudo hb-service update-node brachte mich jetzt auf Node v18.12.0 selbst mit "stretch". 🤷‍♂️

    Hilfreich?

  • DJay


    Ich hatte vor ca. 2 Jahren auch mein Setup von Stretch auf Buster geswitcht.


    Ist hier im Forum irgendwo thematisiert….. Damals hatte ich sogar noch ca. 9 Instanzen……


    Vielleicht find ich den Link noch dazu, bin grad nur im Kurzurlaub im Bayrischen Wald 😄

  • Ich benötige mal eure Hilfe. Ich wusste natürlich nicht das man mit Strech nicht auf die Nodeversion 18 gehen kann und habe ein Update durchgefürt. Dann hat Node nicht mehr funktioniert. Jetzt bin ich wieder auf 16.14 gegangen und bekomme ständig eine Fehlermeldung wenn ich zb eine Versionsabfrage der Plugins mache. Hat jemand eine Idee wie ich die Meldung wegbekomme?

    Zitat

    (node:2652) [LRU_CACHE_OPTION_maxAge] DeprecationWarning: The maxAge option is deprecated. Please use options.ttl instead.

    (Use `node --trace-deprecation ...` to show where the warning was created)