NEWS
[How-to] Node.js ioBroker richtig updaten-2021/22 Edition
-
@sborg sagte in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
Macht es ziemlich anwenderfreundlich.
Macht es für alle anderen nur schwerer da durchzusteigen.
n dürfte das über die alternatives (oder nach einem ähnlichen Muster) symlinken.
Kann man machen, wenn man mehrere npm-Versionen im System haben möchte (oder für Testzwecke muss) und die auch bändigen kann.
Für 99% der Installationen ist das aber nicht sinnvoll. Da empfiehlt sich eine saubere Installation über das nodesource-Paket. -
@chaot said in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
Meine /opt/iobroker/package-lock.json war auch von 2019.
Adapter-Updates hatten seit Update auf Node 16 ewig gedauert. Das Entfernen der package-lock.json (hab sie umbenannt) hat geholfen.
-
@sborg Wo und wie installiert der denn? Wenn wie nvm unter dem User dann ist das Problematisch weil ja alles unter iobroker läuft und schon hat man den schönsten Mischmasch Also aufpassen
-
@apollon77 Der macht nichts spezielles und installiert es unter /usr/local/[bin, include, lib, und share]
Damit hat auch der User iobroker "normale" Rechte drauf.
Der einzige Unterschied ist, dass zusätzlich unter /usr/local/n/versions/node/... noch die gecachten Versionen liegen, damit man eben switchen kann.Ich nutze es mittlerweile seit ca. 3 Jahren und habe seitdem keine Probleme mehr (auch mir ist da vorher mal der ein oder andere faux pas unterlaufen ). 14 Mio downloads sprechen da IMO auch für sich.
Allerdings muss trotzdem eines klar sein (für Mitleser): eine vermurkste Installation biegt es auch nicht mehr gerade. Sorry, aber eine korrekte Erstinstallation ist ein muss. -
Update heute vollzogen Zuerst beim Slave und danach den Master. Beides völlig problemlos. Einzig der Mihome-Adapter hat danach das fehlende Canvas bemängelt, aber das war gleich nachinstalliert.
Das „Austauschen“ der Github-Versionen gegen die aus stable oder latest hat also mögliche Probleme im Vorfeld ausgemerzt.Gruss, Jürgen
-
@wildbill sagte in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
Das „Austauschen“ der Github-Versionen gegen die aus stable oder latest hat also mögliche Probleme im Vorfeld ausgemerzt.
Das so gelesen ... ich schreib das mal oben mit rein in den ersten Post
-
@sborg aber da haben wir wieder /local/, das gibt Ärger bei nodesource
-
@homoran sagte in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
aber da haben wir wieder /local/, das gibt Ärger bei nodesource
Die beißen sich eigentlich nicht, /usr/local liegt früher im $PATH.
Ich würde aber dennoch zu einer einfachen Installation via des distributionseigenen Paketmanagers raten. Zumal der ja auch vom iobroker bereits für die Installation verwendet wird.Für 'Power-User' / Developer (z. B. zum testen von verschiedenen Versionen) ist das natürlich ein guter Weg. Ich bezweifle allerdings, das damit der Mehrheit der Anwender geholfen ist.
-
So, Wasserstandsmeldung:
- Ubuntu 20.04 LTS
- ioBroker mit allen Adaptern auf dem Beta-Channel
- Jupp ich arbeite als root
- Upgrade von node 14 auf 16
Ich habe mir 3 puTTY-Sitzungen aufgemacht
- Sitzung als
root
mit einem
tail -n 1000 -f /opt/iobroker/log/iobroker.current.log
- Sitzung als Benutzer
iobroker
Dazu alsroot
angemeldet und zumiobroker
gewechselt:
sudo -u iobroker /usr/bin/bash cd /opt/iobroker
- Sitzung als
root
für die Befehle
Und so habe ich es gemacht:
als iobroker
iobroker backup iobroker stop
als root
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash - apt install -y nodejs node -v npm -v cd /opt/iobroker iobroker fix
Ich fand das das Upgrade verdächtig schnell ging - aber ok.
als iobroker
iobroker start
Und dann warten ...
Fast alle Adapter sind gleich wieder gestartet, nur diezigbee
Adapter sind gecrasht und er hat den rebuild angestoßen (das kannte ich schon vom Upgrade von 12 auf 14).
WARTEN !!! nach etwa 5 Minuten war damit fertig und Log konnte ich sehen wie diese diesmal erfolgreich gestartet sind.daswetter
ist dann gecrasht, er hat aber keinen rebuild angestoßen. Der Adapter wird nur alle 30 Minuten per cron angestoßen.
Für den habe ich dann einen rebuild gestartet:als iobroker
iobroker rebuild daswetter
Da warte ich jetzt auf das nächste Ergebnis.Der Adapter hat dann beim nächsten Durchlauf ohne Fehler funktioniert.Einzig im MQTT-Adapter hatte ich wieder Datenpunkte mit falschen Typ (warum auch immer der Adapter die wieder geändert hat), gibt ne dicke Fehlermeldung im Log, funktioniert aber trotzdem und er passt den Typ an.
-
@bananajoe sagte in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
Jupp ich arbeite als root
SCHNAPPATMUNG
Wenn es richtig gemacht wird (wie hier) auch kein Problem. Die sieht man leider aber ansonsten so gut wie nie.
-
@thomas-braun sagte in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
@bananajoe sagte in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
Jupp ich arbeite als root
SCHNAPPATMUNG
Wenn es richtig gemacht wird (wie hier) auch kein Problem. Die sieht man leider aber ansonsten so gut wie nie.
Das hättest Du nicht schreiben dürfen. Ab sofort ist dann jeder, der als root unterwegs ist der Meinung, er würde es richtig machen. Der Thomas hat es ja geschrieben…
Gruss, Jürgen
-
Da hat man mal feuchte Augen, weil man (ich glaube zum ersten Mal in diesem Forum) mal ausnahmensweise einen von $AHNUNG getragenen Einsatz von root sieht und dann ist es auch wieder nicht Recht...
Grundsätzlich rate ich aber weiterhin zu 'ordentlicher' Administration des Systems via 'sudo'. Denn einfacher ist das Vorgehen von @BananaJoe ja nun nicht, mit zwei Terminals im jeweils korrekten user-Kontext zu jonglieren.
Vor die zwei Befehle, die es bedürfen ein 'sudo' zu setzen ist nämlich viiiiieeeel einfacher. Da musste nicht die Rolle wechseln oder zwei shells offen haben.
-
Ok, Canvas will wieder nicht:
2022-06-23 22:02:20.404 - error: echarts.0 (54216) Cannot find required modules: Error: The module '/opt/iobroker/node_modules/iobroker.echarts/node_modules/canvas/build/Release/canvas.node' was compiled against a different Node.js version using NODE_MODULE_VERSION 83. This version of Node.js requires NODE_MODULE_VERSION 93. Please try re-compiling or re-installing the module (for instance, using `npm rebuild` or `npm install`).
Ich habe schon im Pfad
/opt/iobroker/node_modules/iobroker.echarts/node_modules/canvas
ein rebuild versucht (wie beim letzten mal)
npm rebuild canvas npm install --build-from-source
Die Datei
/opt/iobroker/node_modules/iobroker.echarts/node_modules/canvas/build/Release/canvas.node
hat auch ein aktuelles Datum, ich vermute er hat die neu erstellt.npm
in dem Pfad ist auch Version 8.Was kann ich tun?
-
canvas ist ein Biest...
Wo liegt das denn sonst noch so herum?cd /opt/iobroker npm ls canvas
Bei mir hab ich das nämlich auch via echarts drin:
npm ls canvas iobroker.inst@3.0.0 /opt/iobroker ├─┬ iobroker.echarts@1.0.12 │ ├── canvas@2.9.1 │ └─┬ jsdom@19.0.0 │ └── canvas@2.9.1 deduped ├─┬ iobroker.iot@1.11.7 │ └── canvas@2.9.1 deduped └─┬ iobroker.mihome-vacuum@3.4.1 └── canvas@2.9.1 deduped
Ich kann mich aber nicht erinnern, das das rumgezickt hätte bei mir.
-
iobroker@iobroker:/opt/iobroker$ npm ls canvas iobroker.inst@2.0.3 /opt/iobroker ├── canvas@2.6.1 ├─┬ iobroker.echarts@1.0.12 │ ├── canvas@2.9.1 │ └─┬ jsdom@19.0.0 │ └── canvas@2.6.1 deduped └─┬ iobroker.iot@1.11.7 └── canvas@2.9.1
Die beiden 2.6er sind vermutlich das Problem? Deduped?
-
@bananajoe sagte in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
Die beiden 2.6er sind vermutlich das Problem?
Das vermute ich auch. Ich hab nur 2.9.1 drin.
Da liegt im root des trees ja noch eine 2.6.1 rum, die ich nicht habe.Die canvas da sollte entbehrlich sein. Kannst du die rauskicken?
-
@thomas-braun sagte in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
@bananajoe sagte in [How-to] Node.js ioBroker richtig updaten-2021/22 Edition:
Die beiden 2.6er sind vermutlich das Problem?
Das vermute ich auch. Ich hab nur 2.9.1 drin.
Da liegt im root des trees ja noch eine 2.6.1 rum, die ich nicht habe.Die canvas da sollte entbehrlich sein. Kannst du die rauskicken?
iobroker.inst@2.0.3 /opt/iobroker ├─┬ iobroker.echarts@1.0.12 │ ├── canvas@2.9.1 │ └─┬ jsdom@19.0.0 │ └── canvas@2.6.1 └─┬ iobroker.iot@1.11.7 └── canvas@2.9.1
erledigt. jetzt muss ich nur noch diese Unterversion finden
-
Die müsste eigentlich auf 2.9.1 (deduped) springen, wenn du den Adapter nochmal 'anpackst' (neuinstallation/upgrade auf gleiche Version)
-
@thomas-braun wie auch immer ich es geschafft habe, das
deduped
ist verschwunden und die Version bleibt bei 2.6.1 -
@bananajoe
Ja, klar, die hat ja jetzt keinen 'dupe' mehr und steht alleine.
Haste echarts jetzt nochmal angetreten?(Ansonsten liegts am root!1!!! Wer weiß was du dir da alles kaputtgefummelt hast!11!!!!!!!)