NEWS
Uralt System updaten oder Umzug
-
@mr-x said in Uralt System updaten oder Umzug:
@mcm1957 sagte in Uralt System updaten oder Umzug:
Ich will mich da nicht allzusehr einmischen ABER
Ich würde einfach versuchen die neue Kiste mit aktuellem O/S und node 20 aufzusetzen. Dort js-controller5 5.0.19 (!) zu installieren und dann das Backup versuchen einzuspielen. Wenn das geht kann man dann weiter aktualisieren. Wenn nicht schau mal mal welche Fehelr gemelset werden,Habe unter Proxmox ein frisches neues System laufen mit node 20 und JS 7.0.6.
Warum schreibst du, dass dort 5.0.19 drauf soll.Beim Aktualisieren sollten man immer nur eine js-cotnroller version updaten. Der aktuelle js-controlelr code würde (in zukunft) bei einem upgrade self auch nur x-mal eine Major aktualisieren.
Ich schreib js-controlelr 5 drauf da das restore eines 4er Backups unetr 5 deutlich sicherer funktionieren sollte als unter js-controller 7.
-
@homoran said in Uralt System updaten oder Umzug:
@mcm1957 sagte in Uralt System updaten oder Umzug:
@oliverio
Warum sollte er ein Backup von js-controller 4 nicht in js-controller 5 importieren können ?geht nicht!
wird dir auch beim erstellen des Backups gesagt.Dann muss vor dem Einspielen der vontroller auf v4 downgegradet werdrn3
NEIN - das glaub ich nicht. Sorry.
Aber wenn's notweig sein sollte, dann halt js-controller 4 installieren ...EDIT:
Ich kenn nur die folgende Meldung im backit up:The current version of js-controller differs from the version in the backup. The js-controller version of the backup can not be restored automatically. To restore the js-controller version of the backup, execute "npm i iobroker.js-controller@x.y.z --production" inside your ioBroker directory If you really want to restore the backup with the current installed js-controller, execute the restore command with the --force flag
Die schlägt zwar vor js-controller downzugraden ist aber nicht zwingend.
-
Das mit den Abhängigkeiten versuchte ich gestern im discord zu erklären. Aber man hat mich wohl nicht so richtig verstanden.
Irgendwas prüft gegen die aktuellen Abhängigkeiten und nicht gegen die Abhängigkeiten im jeweiligen versions package. -
@oliverio said in Uralt System updaten oder Umzug:
Das mit den Abhängigkeiten versuchte ich gestern im discord zu erklären. Aber man hat mich wohl nicht so richtig verstanden.
Nochmal:
Warum sollte npm bei der Installation des js-controllers überhaupt irgendeine Abhängigkeit eines Adapters prüfen. Das sind völlig unabhängige npm Pakete würd ich mal sagen. Im package.json des js-controllers kann doch nie eine Abhhängigkeit zu einem Adapter stehen ... -
Ich meine, npm ackert bei jedem Aufruf die kompletten Abhängigkeiten durch und spuckt dann Meldungen auch zu Aktionen aus, die gerade gar nicht anstehen.
Macht der Paketmanager apt z. B. auch nicht anders. Dient dazu, die Abhängigkeiten sauber zu halten.
-
@mcm1957
Die Frage ist ja sicherlich nur rethorisch an mich gestellt?Ich kann mir auch nicht vorstellen das das npm verursacht.
Aber woher soll in diesem System mit dem aktuellen Setting irgendwas von Node 20 wissen. Warum nicht Node 22. also irgendwo muss es herkommen.Aber wissen tu ich es nicht.
-
@thomas-braun said in Uralt System updaten oder Umzug:
Ich meine, npm ackert bei jedem Aufruf die kompletten Abhängigkeiten durch und spuckt dann Meldungen auch zu Aktionen aus, die gerade gar nicht anstehen.
Ja - aber doch nur die Abhängigkeiten des zu installierenden Pakets. Und eben da endet mein Verständnis.
Wenn ioBroker.Shelly einen Fehler meldet weil axios nicht passt ist das ja ok. axios ist ja (in dem Fall sogar direkt) eine depoendency von ioBroker.shelly.
Aber ioBroker.lovelace ist auch sicht der npm Struktur völlig unabhängig vom paket js-controller. Weder js.controller sollte im package.json von lovelace srinnen stehen noch umgekehrt. Also warum schaut sich npm überhaupt lovelace an wenn es js.controller installieren soll ...
-
@oliverio said in Uralt System updaten oder Umzug:
Ich kann mir auch nicht vorstellen das das npm verursacht.
Aber woher soll in diesem System mit dem aktuellen Setting irgendwas von Node 20 wissen. Warum nicht Node 22. also irgendwo muss es herkommen.Die Fehlermeldung `npm error code EBADENGINE``ist eine Fehlermeldung die npm ausspuckt. Da spielt ioBroker nicht mit. Node 20 kommt aus lovelace, das ist ja ok. Aber warum npm lovelace überhaupt anssieht ist mir völlig unklar.
-
@mcm1957 sagte in Uralt System updaten oder Umzug:
Ja - aber doch nur die Abhängigkeiten des zu installierenden Pakets.
Nein, auch unbediente Abhängigkeiten von vorherigen Installationsversuchen tauchen da wieder auf.
Edit:
Ein ähnliches Verhalten hast du auch, wenn Module nicht gebaut werden können. Die Meldungen tauchen dann auch bei anderen npm-Vorgängen wieder auf. Solange bis das Problem behoben wurde oder das Paket rausgekickt wurde. -
@thomas-braun
Ich denke npm install schaut sich die ganze Package-lock an und versucht dann alle Abhängigkeiten neu aufzulösen um das zusätzliche Paket mit einzufügen. -
@oliverio said in Uralt System updaten oder Umzug:
@thomas-braun
Ich denke npm install schaut sich die ganze Package-lock an und versucht dann alle Abhängigkeiten neu aufzulösen um das zusätzliche Paket mit einzufügen.Und warum sollte im package-lock des js-controllers jemals was von lovelace drinnen stehen?
-
@oliverio sagte in Uralt System updaten oder Umzug:
Ich denke npm install schaut sich die ganze Package-lock an und versucht dann alle Abhängigkeiten neu aufzulösen um das zusätzliche Paket mit einzufügen.
Ja, das dürfte die zugrundeliegende Strategie von npm sein. Das ganze Konstrukt soll ja konsistent sein.
-
Egal:
Mein Vorschlag war und ist noch immer- aktuelles System mit node 20 und js-controller 5 (oder ev. 4) aufsetzen
- backup dort reinspielen
- dann aktualisiseren
Wenns dabei Problem gibt kann man sich die ansehen. Kann sein, dass das Verfahren nicht geht, aber es kostet eher wenig Aufwand.
Bei der Grundsatzdiskussion warum hier npm laovelace bachtet kommen wir m.E. hier nicht weiter.
-
@mcm1957 sagte in Uralt System updaten oder Umzug:
Und warum sollte im package-lock des js-controllers jemals was von lovelace drinnen stehen?
Tut es wohl auch nicht.
Aber
Adapter "lovelace" : 4.1.15 , installed 1.5.0 [Updatable]
bringt ja auch eine 'Wunschliste' an Abhängigkeiten mit, die erfüllt werden wollen. -
@thomas-braun said in Uralt System updaten oder Umzug:
Ja, das dürfte die zugrundeliegende Strategie von npm sein. Das ganze Konstrukt soll ja konsistent sein.
Ich hab noch bei keinem Adapter im package-lock einen anderen Adapter entdeckt. Das Pacakgelock wird nur anhand des Inhalts des package.json erstellt. wenn wer ein Beispiel eines package-lock,json hat in dem ein anderer Adapetr steht bitte gerne zeigen.
-
@mcm1957 sagte in Uralt System updaten oder Umzug:
Ich hab noch bei keinem Adapter im package-lock einen anderen Adapter entdeckt.
Muss ja auch nicht. npm orgelt alle Wunschzettel im Tree durch.
Bei apt kann man das dann z. B. per --force reinprügeln. Ist aber meist keine gute Idee.
npm wird das wohl ähnlich handhaben. -
Also bei mir in der Datei
/opt/iobroker/package-lock.json
Stehen alle Pakete aller Adapter inklusive deren Abhängigkeiten drin.
Bei jedem install wird diese aktualisiert.Ne force nie machen. Npm hat zu 99% recht
-
Das wird dann die Grundlage für den Aufbau des ioBrokers inkl. aller Module und deren Unterabhängigkeiten sein.
Bei apt kann das dann zur sog. 'Dependency Hell' führen. Tritt besonders gerne auf, wenn man zig Fremdquellen und/oder zum Release unpassende Quellen angelegt hat.
-
Dürfte bei npm ähnlich sein. Hab mir nur noch nie angeschaut was passiert wenn 2 Pakete eine Abhängigkeit zum gleichen Paket aber 2 unterschiedliche inkompatible jeweils Versionen hat, ob dann beide Versionen in node modules gespeichert wird.
Du musst nicht antworten, wir weichen ab.
Um dem TE zu helfen sehe ich aktuell, da wir mit diesem System nicht mehr weiterkommen, nur 2 Möglichkeiten.
Für beide benötigt er idealerweise eine zweit Hardware. Sonst wird es noch vieeeel komplizierter und übersteigt wahrscheinlich die Fähigkeiten das per Fernsteuerung zu machen.Für beide, wie gesagt nur mit separater Hardware und aktuelles Betriebssystem aufgespielt + Node 20 oder besser gleich Node 22
Alternative A, wenn aktuelles Backup vorliegt, aber in alter iobroker Version
- iobroker in gleicher majorversion, aber davon die jeweils letzte Version (kann man bei npm nachschauen) installieren
- dort dann das Backup einspielen
- von dort aus dann die ganzen Aktualisierungen des iobrokers immer in einem einzelnen Major Release Schritt vornehmen mit allen Adapter Aktualisierungen
- am besten nach Abschluss der Aktualisierung eines Major Schritts immer wieder neues Backup erstellen zur Sicherheit
Aber ich meine gelesen zu haben, das kein aktuelles Backup vorliegt. Daher
Alternative B- kopieren aller Dateien unterhalb /opt/iobroker. Achtung das können echt viele Dateien sein. Bei meiner testinstallation bspw ca 7 GB
- überlegen welche weiteren Dienste noch verwendet wurden (Redis,MySQL,influx,grafana,etc). Dort dann jeweils auch die Daten separat sichern (Hilfe dann hier oder Internet)
- dann die Daten auf dem neuen System alle Daten an die gleiche Stelle kopieren
- überprüfen ob alles vollständig ist? Ggfs. in der Alt Installation nachschauen und Daten auch noch transferieren.
- versuchen die Installation zu aktualisieren (wie bei A)
- das altgerät immer im zugriff haben
Hat aber alles seine Risiken und es gibt keine erfolgsgarantie.
-
@oliverio sagte in Uralt System updaten oder Umzug:
Dürfte bei npm ähnlich sein. Hab mir nur noch nie angeschaut was passiert wenn 2 Pakete eine Abhängigkeit zum gleichen Paket aber 2 unterschiedliche inkompatible jeweils Versionen hat, ob dann beide Versionen in node modules gespeichert wird.
Du musst nicht antworten, wir weichen ab.
Um dem TE zu helfen sehe ich aktuell, da wir mit diesem System nicht mehr weiterkommen, nur 2 Möglichkeiten.
Für beide benötigt er idealerweise eine zweit Hardware. Sonst wird es noch vieeeel komplizierter und übersteigt wahrscheinlich die Fähigkeiten das per Fernsteuerung zu machen.Für beide, wie gesagt nur mit separater Hardware und aktuelles Betriebssystem aufgespielt + Node 20 oder besser gleich Node 22
Alternative A, wenn aktuelles Backup vorliegt, aber in alter iobroker Version
- iobroker in gleicher majorversion, aber davon die jeweils letzte Version (kann man bei npm nachschauen) installieren
- dort dann das Backup einspielen
- von dort aus dann die ganzen Aktualisierungen des iobrokers immer in einem einzelnen Major Release Schritt vornehmen mit allen Adapter Aktualisierungen
- am besten nach Abschluss der Aktualisierung eines Major Schritts immer wieder neues Backup erstellen zur Sicherheit
Aber ich meine gelesen zu haben, das kein aktuelles Backup vorliegt. Daher
Alternative B- kopieren aller Dateien unterhalb /opt/iobroker. Achtung das können echt viele Dateien sein. Bei meiner testinstallation bspw ca 7 GB
- überlegen welche weiteren Dienste noch verwendet wurden (Redis,MySQL,influx,grafana,etc). Dort dann jeweils auch die Daten separat sichern (Hilfe dann hier oder Internet)
- dann die Daten auf dem neuen System alle Daten an die gleiche Stelle kopieren
- überprüfen ob alles vollständig ist? Ggfs. in der Alt Installation nachschauen und Daten auch noch transferieren.
- versuchen die Installation zu aktualisieren (wie bei A)
- das altgerät immer im zugriff haben
Hat aber alles seine Risiken und es gibt keine erfolgsgarantie.
Alternative C - sofern die alte Installation noch läuft:
Manuell Umziehen, sprich
- ioBroker komplett neu installieren
- Adapter Einzeln installieren, Konfiguration übernehmen, Schauen ob man Datenpunktnamen (manuell) übernehmen kann.
- Skripte und andere externe Daten (z.Bsp beim Zigbee Adapter) manuell selektiv kopieren.
Mag mehr Arbeit machen, aber
- während man das macht läuft der alte noch bis man Hardware umzieht
- man kann bestimmte Dinge in dem Zusammenhang neu aufsetzen - vielleicht mit Verbesserungen die sonst immer auf der langen Bank liegen.
Dauert das Länger als der Versuch via Backups ? Klar.
Aber es funktioniert garantiert, und im Forum kann auch sicher geholfen werden. Das ist bei der aktuellen Lage vielleicht auch für den TE besser.Nebenbei - extra Hardware zum Installieren ist da: Original ist PI4, Neu soll NUC mit Proxxmoxx sein - soweit ich das mitgelesen habe.
Ab einem gewissen Alter (der Software) muss man sich damit abfinden das automatisches Upgrade kritisch ist. Da ist manuelles Arbeiten besser. (was dann Wasser auf die Mühlen von @Thomas-Braun ist - man muss das Zeugs auf Stand halten, sonst kommt irgendwann das böse Erwachen.)
A.