Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Announcements
    3. Update NodeJS best practise, supported 16 und 18!

    NEWS

    • Update NodeJS best practise, supported 16 und 18!

    • Update js-controller 4.0.24 (Stable)

    • Fehler 25, 217 oder "ENOTEMPTY" bei Adapter-Install/Update

    Update NodeJS best practise, supported 16 und 18!

    This topic has been deleted. Only users with topic management privileges can see it.
    • Dutchman
      Dutchman Developer Most Active Administrators last edited by Dutchman

      Hi Community,

      Jedes Jahr geht eine Node.js Version in den sogenannten EOL (End-Of-Live) Status, wodurch diese Version(en) nicht mehr weiterentwickelt werden.
      Seht dies als ein Grundgerüst eures Systems, vergleichbar mit einem Windows XP was man nicht mehr benutzten sollte 🙂

      Da wir uns ständig darum bemühen euch die beste Stabilität, neuesten Features aber auch Sicherheit relevanten Updates zu garantieren, wird ab js-controller 5.x (release geplant 2tes Quartal 2023!) nur noch die folgenden Node.js Versionen unterstützt:

      • Node.js 16.4.0 oder höher
      • Node.js 18.x

      Eine Übersicht der aktuellen (und geplanten) Versionen zu NodeJS findet ihr hier: https://github.com/nodejs/release#release-schedule

      Wir empfehlen bezüglich NPM immer die Version zu benutzen, die mit der Node.js Version standardmäßig mitgeliefert, mit anderen Worten installiert, wird. Gesonderte npm pdates sind an sich nicht nötig.

      Alle älteren Versionen werden nicht mehr unterstützt! Das heisst ein update auf js-controller 5.x wird nur möglich sein mit node 14.18.0 (oder höher!)

      Wie aktualisiere ich meine Node.js Version ?

      • Native Installation auf Linux, siehe dieses topic
      • Docker: https://docs.buanet.de/de/iobroker-docker-image/docs/#wartung
      • Windows: https://forum.iobroker.net/post/963711

      1 Erstens immer ein Backup !

      Wir ein bekanntes Sprichwort unter IT-Nerds: Ohne backup ... kein Mitleid. Sorgt also bitte immer dafür, bei derartigen großen Änderungen an euren System, das ihr ein aktuelles Backup habt und dieses auch extern erreichbar ist und sich nicht nur auf dem System selber befindet !

      Hierfür eignet sich am besten der Adapter Backit-up, dieser bietet euch die Möglichkeit den kompletten ioBroker zu sichern inklusive euren Skripten, Adapter etc.

      2 Erstmal alle ioBroker Dienste anhalten, ab hier benötigt ihr SSH Zugang zu eurem System

      Bevor wir loslegen, sollte alle ioBroker relevanten Prozesse erstmal angehalten werden. Das geht am einfachsten durch:

      1. Einloggen auf der console per ssh, tip: Schaut euch mal MobaXtherm an ein tool womit man SSH Verbindungen sehr leicht managen kann
      2. Danach sollte diese Befehle ausreichend sein ioBroker an zu halten:
      iob stop
      

      Sollte diese Befehl nicht klappen, probiert es bitte mit:

      cd /opt/iobroker
      iobroker stop
      

      Alte NodeJS Version löschen

      Mit diesem Befehl wird Node.js von euren System gelöscht werden

      sudo apt purge --autoremove nodejs* npm node-* 
      

      Auf der console sollte dann ein vergleichbare Nachricht kommen die alle Pakete summiert die gelöscht werden, diese bestätigen wir mit y

      sudo apt purge --autoremove nodejs npm
      Reading package lists... Done
      Building dependency tree... Done
      Reading state information... Done
      Package 'npm' is not installed, so not removed
      The following packages will be REMOVED:
        libpython2-dev* libpython2-stdlib* libpython2.7* libpython2.7-dev* libpython2.7-minimal* libpython2.7-stdlib* nodejs* python2* python2-dev* python2-minimal* python2.7* python2.7-dev* python2.7-minimal*
      0 upgraded, 0 newly installed, 13 to remove and 72 not upgraded.
      After this operation, 161 MB disk space will be freed.
      Do you want to continue? [Y/n] 
      

      Glückwunsch, die jetzigen Node.js Version wurde vom System gelöscht

      3 Das richtige Repository installieren

      Jetzt müssen wir dafür sorgen das unser System versteht welche Node.js Version wir verwenden möchten. Der folgende Befehl lädt die entsprechende Node.js Repositories, beachtet dabei bitte die Versions Nummer.
      Wir empfehlen die jetzige LTS Version 18.x, der Befehl dazu lautet:

      curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
      

      Das Ergebnis sollte ungefähr so aussehen:

      ## Confirming "jammy" is supported...
      
      + curl -sLf -o /dev/null 'https://deb.nodesource.com/node_18.x/dists/jammy/Release'
      
      ## Adding the NodeSource signing key to your keyring...
      
      + curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | gpg --dearmor | tee /usr/share/keyrings/nodesource.gpg >/dev/null
      
      ## Creating apt sources list file for the NodeSource Node.js 18.x repo...
      
      + echo 'deb [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x jammy main' > /etc/apt/sources.list.d/nodesource.list
      + echo 'deb-src [signed-by=/usr/share/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x jammy main' >> /etc/apt/sources.list.d/nodesource.list
      
      ## Running `apt-get update` for you...
      
      + apt-get update
      Get:1 https://deb.nodesource.com/node_18.x jammy InRelease [4563 B]
      Get:2 https://deb.nodesource.com/node_18.x jammy/main amd64 Packages [776 B]    
      Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease
      Hit:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
      Hit:5 http://archive.ubuntu.com/ubuntu jammy-security InRelease
      Fetched 5339 B in 0s (11.9 kB/s)
      Reading package lists... Done
      
      ## Run `sudo apt-get install -y nodejs` to install Node.js 18.x and npm
      ## You may also need development tools to build native addons:
           sudo apt-get install gcc g++ make
      ## To install the Yarn package manager, run:
           curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null
           echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
           sudo apt-get update && sudo apt-get install yarn
      

      Node.js wurde jetzt noch nicht installiert, nur vorbereitet. Beachte bitte diesen teil: ## Confirming "XXXXX" is supported...
      Sollte dort stehen XXX (eure Linux version) not supported, ist euer System zu alt (z.b. Debian 8-Jessie oder 9-Stretch) und diese Node.js Version kann nicht installiert werden.

      In diesem Fall kann man eine ältere probieren, z.b. 16, aber niemals niedriger als 14.18 (da nicht supported!).
      Es ist aber auch der Zeitpunkt mal drüber nach zu denken ob mein sein OS nicht updaten sollte, nur mal so als Tipp 😉

      Als nächstes muss Node.js selber noch installiert werden (nur wenn der vorige Befehl erfolgreich war!), dazu geben wir die befehle:

      sudo apt install -y nodejs
      

      Eine erfolgreiche Installation sollte ungefähr so aussehen:

      sudo apt-get install -y nodejs
      Reading package lists... Done
      Building dependency tree... Done
      Reading state information... Done
      The following NEW packages will be installed:
        nodejs
      0 upgraded, 1 newly installed, 0 to remove and 99 not upgraded.
      Need to get 28.7 MB of archives.
      After this operation, 187 MB of additional disk space will be used.
      Get:1 https://deb.nodesource.com/node_18.x jammy/main amd64 nodejs amd64 18.15.0-deb-1nodesource1 [28.7 MB]
      Fetched 28.7 MB in 0s (76.9 MB/s)
      Selecting previously unselected package nodejs.
      (Reading database ... 34655 files and directories currently installed.)
      Preparing to unpack .../nodejs_18.15.0-deb-1nodesource1_amd64.deb ...
      Unpacking nodejs (18.15.0-deb-1nodesource1) ...
      Setting up nodejs (18.15.0-deb-1nodesource1) ...
      Processing triggers for man-db (2.10.2-1) ...
      

      Zur Sicherheit überprüfen wir jetzt ob auch wirklich die richtige Version installiert wurde, das geht mit

      sudo ln -s /usr/bin/node /usr/bin/nodejs &> /dev/null
      type -P nodejs node npm npx && nodejs -v && node -v && npm -v && npx -v 
      

      und ergibt eine Ausgabe wie

      /usr/bin/nodejs
      /usr/bin/node
      /usr/bin/npm
      /usr/bin/npx
      v18.15.0
      v18.15.0
      9.50.0
      9.50.0
      

      Wichtig dabei ist:

      • nodejs liegt in /usr/bin
      • node liegt in /usr/bin
      • npm liegt in /usr/bin
      • npx liegt in /usr/bin
      • die Versionsnummern von nodejs und node sowie von npm und npx stimmen jeweils überein.

      Falsch ist eine Installation in /usr/local/bin oder irgendwelchen anderen Verzeichnissen als /usr/bin

      4 ioBroker für den ersten Start vorbereiten

      Da ein Node.js update dafür sorgen kann das Berechtigungen neu gesetzt werden müssen. Dafür den Befehl iob fix eingeben,

      Probieren, das Ergebnis sollte so aussehen

      iob fix
      library: loaded
      Library version=2022-12-09
      
      ==========================================================================
      
          Welcome to the ioBroker installation fixer!
          Script version: 2022-12-22
      
      ==========================================================================
      
      
      ==========================================================================
          Installing prerequisites (1/4)
      ==========================================================================
      
      Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
      Hit:2 https://deb.nodesource.com/node_18.x jammy InRelease
      Hit:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
      Hit:4 http://archive.ubuntu.com/ubuntu jammy-security InRelease
      Reading package lists... Done
      Installed gcc-c++
      
      ==========================================================================
          Checking ioBroker user and directory permissions (2/4)
      ==========================================================================
      
      Created /etc/sudoers.d/iobroker
      Fixing directory permissions...
      
      ==========================================================================
          Database maintenance (3/4)
      ==========================================================================
      
      Checking for uncompressed JSONL databases... This might take a while!
      
      Compressing /opt/iobroker/iobroker-data/objects.jsonl
      Compressed 1 JSONL files. Done
      
      ==========================================================================
          Checking autostart (4/4)
      ==========================================================================
      
      Enabling autostart...
      Autostart enabled!
      
      ==========================================================================
      
          Your installation was fixed successfully
          Run iobroker start to start ioBroker again!
      
      ==========================================================================
      

      5 ioBroker wieder Starten

      Herzlichen Glückwunsch, euer System ist jetzt auf den neuesten Major-Stand bezüglich Node.js. Alle weiteren Updates die regelmäßig per "apt update" kommen sind dann problemlos.
      In einem jahr kommen wir dann ggf zum nächsten Major Update !

      Jetzt nur noch ioBroker wieder starten:

      iob start
      

      Beim ersten Start kann es sein das einzelne Adapter erkannt werden, bei denen binäre Bestandteile neu erstellt werden müssen. Diese Adapter loggen ggf Fehler im Log und beenden sich beim ersten Start wieder. Dann werden diese versucht zu korrigieren, was einen Augenblick dauern kann. Falls ein Adapter auch nach 3 versuchen noch nicht wieder starte bitte im Log nach weiteren Anweisungen schauen und ggf im Diskussions-Thred melden.

      Weitere Informationen sind auch im Vorgänger-Thread https://forum.iobroker.net/topic/44566/how-to-node-js-iobroker-richtig-updaten-2021-22-edition (Abschnitt "Erster ioBroker Neustart NACH Update") zu finden!

      Troubleshooting

      Da es fast unmöglich ist alle NodeJS relevanten update Fehler in einer FAQ fest zu legen, bitte diesen thread euer eventuelle Fragen beziehungsweise Troubleshooting verwenden. Ein oft verkommenes Thema ist das die jetzige Linux-Version zu alt ist, in diesem Fall ist es leider notwendig erst einmal euer System zu updaten.
      Abhängig von der Performance ist ein update eventuell nicht effizient und würde eine neu Installation schneller verlaufen. Ein Backup/Restore eurer jetzigen Installation sollte mit Backit-up ausgeführt werden.

      1 Reply Last reply Reply Quote 24
      • First post
        Last post

      Support us

      ioBroker
      Community Adapters
      Donate

      1.2k
      Online

      30.3k
      Users

      64.6k
      Topics

      993.9k
      Posts

      nodejs 18 nodejs update
      1
      1
      6597
      Loading More Posts
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes
      Reply
      • Reply as topic
      Log in to reply
      Community
      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
      The ioBroker Community 2014-2021
      logo