NEWS
iobroker upgrade: js-controller futsch
-
Systemdata Bitte Ausfüllen Hardwaresystem: QNAP Virtualization Station Arbeitsspeicher: 8 GB Festplattenart: Virtuelle Festplatte Betriebssystem: Ubuntu 18.04.6 LTS Node-Version: v16.14.0 Nodejs-Version: v16.14.0 NPM-Version: 8.3.1 Installationsart: zu lange her Image genutzt: zu lange her Ort/Name der Imagedatei: zu lange her Ich habe mein System von Node V12 auf Node V16 hochgerüstet.
Nach iob start lief alles problemlos.Dann wollte ich die mir angezeigten Aktualisierungen (web auf letzte Version und js-controller auf 4.0.4) durchführen.
Nach iob stop und iob update machte ich einen simplen iob upgrade.
Der lief ohne Fehlermeldung durch. Ich sah auch, dass web aktualisiert wurde.
Ein iob start lieferte dann die Fehlermeldung, es gäbe keinen js-controller.Musste den js-controller 3.3 neu installieren, Backup wieder einspielen und alle Adapter nachinstallieren lassen.
-
@aski71 sagte in iobroker upgrade: js-controller futsch:
Ich habe mein System von Node V12 auf Node V16 hochgerüstet.
Nach iob start lief alles problemlos.tatsächlich??
mit
@aski71 sagte in iobroker upgrade: js-controller futsch:
NPM-Version:
8.3.1wohl eher nicht
Empfohlen ist node 14 mit npm 6
Erst der COntroller v4 kann mit diesen Versionen (hoffentlich) umgehen
-
Mach kleinere Sprünge. Von node12 auf node14 (und dann da bleiben) und den js-controller und die Adapter auf den aktuellen Stand der stable Versionen würde ich empfehlen.
-
Danke für die Empfehlungen, aber wenn ich sage, es lief alles, dann lief alles. Jetzt läuft auch wieder alles.
Und wenn in den Release Notes steht: "Node.js 16.x wird mit js-controller 4.0 nun auch mit npm 7 bzw. 8 unterstützt.", dann geh ich auch davon aus, dass das funktioniert.
Insofern ist mein Anliegen:
Ich mache hier auf einen Fehler aufmerksam, der mir begegnet ist.
Der Fehler kam durch ein "iob upgrade" ohne weitere Parameter zustande.
Dieser sollte einfach alles upgraden. Tat es aber nicht. Es upgradete den out of date web Adapter und ließ den out of date js-controller verschwinden.
Das ist nicht so gut. Wer sich berufen fühlt, darf sich gerne den Kopf zerbrechen, wie und warum das passieren konnte.In diesem Sinne, frohes Schaffen allerseits und danke nochmals.
-
@aski71 sagte in iobroker upgrade: js-controller futsch:
Ich mache hier auf einen Fehler aufmerksam, der mir begegnet ist.
Sorry wenn ich pedantisch bin, aber ich sehe keine Fehlermeldung
-
@aski71 aaaalso....
du hattest noch controllerv3 und trotzdem npm v8.
das läuft auch solange bis du npm benötigst, nämlich beim nächsten update.iobroker upgrade
aktualisiert alle Adapter. Der Controller ist keiner.
Der hätte aber als allererstes überiobroker upgrade self
aktualisiert werden müssen, damitcder Rest mit npm v8 korrekt aktualisiert hätte werden können. Das ist aber in die Hose gegangen, weil der controller v3 nicht mit npm v8 klar kommen konnte.Also alles kein Fehler von ioBroker!
-
@alcalzone said in iobroker upgrade: js-controller futsch:
@aski71 sagte in iobroker upgrade: js-controller futsch:
Ich mache hier auf einen Fehler aufmerksam, der mir begegnet ist.
Sorry wenn ich pedantisch bin, aber ich sehe keine Fehlermeldung
Stimmt. Gab auch keine.
-
@homoran said in iobroker upgrade: js-controller futsch:
@aski71 aaaalso....
du hattest noch controllerv3 und trotzdem npm v8.
das läuft auch solange bis du npm benötigst, nämlich beim nächsten update.Hm. Der Controller wird doch nur zur Laufzeit benötigt und nicht bei Installation oder Upgrade?!
Da läuft der ja gar nicht, weil gestoppt.iobroker upgrade
aktualisiert alle Adapter. Der Controller ist keiner.
Der hätte aber als allererstes überiobroker upgrade self
aktualisiert werden müssen, damitcder Rest mit npm v8 korrekt aktualisiert hätte werden können. Das ist aber in die Hose gegangen, weil der controller v3 nicht mit npm v8 klar kommen konnte.Ja. Upgrade self aktualisiert nur den Controller. Aber nochmal: Solange nix läuft, sollte es für die Installation egal sein, ob erst der Adapter oder erst der Controller aktualisiert wird. Verständlich ist, dass Adapter zur Laufzeit eine Abhängigkeit vom Controller haben und deshalb auf die Nase fallen können, wenn eine höhere Controller Version vorausgesetzt wird.
Also alles kein Fehler von ioBroker!
Sehe ich im Rahmen der Robustheit anders.
Und dass ein Upgrade den Controller verschwinden lässt, ist nicht robust. Das darf einfach nicht passieren. -
@aski71 sagte in iobroker upgrade: js-controller futsch:
Da läuft der ja gar nicht, weil gestoppt.
und wie funktionieren dann die
iobroker tuDies
Befehle? -
@aski71 sagte in iobroker upgrade: js-controller futsch:
Der Controller wird doch nur zur Laufzeit benötigt und nicht bei Installation oder Upgrade?!
Eben doch:
iobroker upgrade ...
Befehle rufen den JS-Controller, bzw. seine CLI auf. Der wiederum ruftnpm
auf. Und wennnpm
beim Installieren vom JS-Controller auf die Nase fällt, z.B. wegen einernpm
-Version, die mit dem (noch) alten Controller nicht kompatibel ist, dann ist der futsch. -
@alcalzone said in iobroker upgrade: js-controller futsch:
@aski71 sagte in iobroker upgrade: js-controller futsch:
Der Controller wird doch nur zur Laufzeit benötigt und nicht bei Installation oder Upgrade?!
Eben doch:
iobroker upgrade ...
Befehle rufen den JS-Controller, bzw. seine CLI auf. Der wiederum ruftnpm
auf. Und wennnpm
beim Installieren vom JS-Controller auf die Nase fällt, z.B. wegen einernpm
-Version, die mit dem (noch) alten Controller nicht kompatibel ist, dann ist der futsch.Tatsächlich. Ich hab mir das gerade im Code angesehen.
Passt dennoch alles nicht zusammen: Nach dieser Logik dürfte dann ja weder "upgrade <adapter>" noch "upgrade self" funktionieren.
Lustigerweise ist der Adapter-Upgrade von web vorher ja problemlos durchgelaufen. js-controller aber nicht und es gab nicht mal eine Fehlermeldung. Der war einfach weg.Der pure "upgrade" ohne weitere Parameter macht einen "upgrade all". Da gehe ich aus Erfahrung davon aus, dass der js-controller mit upgegradet wird. Zumindest war das bei mir in der Vergangenheit so.
Aber egal. Jetzt bin ich schlauer.
Wenn das so tricky ist, würde ich mir aber dennoch aus Robustheitsgründen wünschen, dass iob eine Versionsprüfung auf eine maximal zugelassene node oder npm Version macht und sagt: Die node/npm Version ist mir zu hoch. Die unterstütz ich nicht und mach gar nix.
-
Dafür gibt es ja nicht ohne Grund eine Empfehlung vom ioBroker-Team, was die beste Version von nodeJS angeht. Im Moment ist das immer noch node14 / npm6. Andere Versionen können funktionieren, müssen aber nicht. Insbesondere bei Versionsübergängen kann es naturgemäß da halt knirschen.
-
@thomas-braun said in iobroker upgrade: js-controller futsch:
Dafür gibt es ja nicht ohne Grund eine Empfehlung vom ioBroker-Team, was die beste Version von nodeJS angeht. Im Moment ist das immer noch node14 / npm6. Andere Versionen können funktionieren, müssen aber nicht. Insbesondere bei Versionsübergängen kann es naturgemäß da halt knirschen.
Eben drum wäre es guter Programmierstil, das abzufangen.
Das kann ja einem Anwender ja auch zwischen dem supporteten Wechsel zwischen Node 12 und 14 passieren, dass er sich etwas zerlegt, weil er die Reihenfolge nicht kennt oder nicht eingehalten hat. -
@aski71 Den Fehler kann man selbst abfangen, indem man vor jedem Update n Backup / Snapshot macht
Gehts nicht oder ich hab keine Zeit genauer zu investigieren, geh ich wieder zurueck. -
@ilovegym said in iobroker upgrade: js-controller futsch:
@aski71 Den Fehler kann man selbst abfangen, indem man vor jedem Update n Backup / Snapshot macht
Gehts nicht oder ich hab keine Zeit genauer zu investigieren, geh ich wieder zurueck.Was glaubst Du, was ich gemacht habe?
Vor so einer fundamentalen Änderung klone ich sogar meine ganze virtuelle Maschine. Dann kann ich nämlich, falls es schief geht und ich keine Zeit habe, einfach die alte 1:1 wieder hoch fahren. Überraschung: Ich habe nämlich noch andere node Abhängigkeiten, die nicht iobroker heißen. Zum Beispiel homebridge.
Nehmt halt mal einfach Denkanregungen und Verbesserungsvorschläge an, statt immer zu diskutieren, wie man es auch machen könnte. Das ist mir schon klar, wie man es auch machen kann. Das Ziel einer jeden Entwicklung muss doch sein, dem Anwender so wenig Probleme wie möglich zu bereiten. Ihr müsst auch mal an Leute denken, die sich nicht rund um die Uhr mit der Materie auseinandersetzen und dennoch ein lauffähiges System haben wollen.
Daher einfach mein Verbesserungsvorschlag, jetzt wo ich es verstanden habe:
js-controller sollte prüfen ob seine Voraussetzungen in der gültigen Range liegen und sagen: Ich brauche npm 0.0.7 bis 0.8.15. Du hast npm 47.11.
Dann weiß man, wie man dran ist. -
@aski71 sagte in iobroker upgrade: js-controller futsch:
Und dann kann ich auf meinem Testsystem keine von der Empfehlung abweichende Version fahren? Nö.
-
@aski71 sagte in iobroker upgrade: js-controller futsch:
js-controller sollte prüfen ob seine Voraussetzungen in der gültigen Range liegen und sagen: Ich brauche npm 0.0.7 bis 0.8.15. Du hast npm 47.11.
wie soll er das machen, wenn du an ihm vorbei node, und vor allem npm, auf eine zu hohe Version setztst?
Wenn der arme Controller dann wieder arbeitet ist es schon passiert.Dann müssten die Macher von npm es so programmieren, dass vor der Installation von npmv8 überprüft wird ob alle existierenden Programme damit schon zurechtkommen.
Ich glaube nicht, dass npm das machen wird!Und das Problem, dass Homebridge die ioBroker Installation killt, ist hier im Forum schon öfters besprochen worden.
-
@homoran said in iobroker upgrade: js-controller futsch:
@aski71 sagte in iobroker upgrade: js-controller futsch:
js-controller sollte prüfen ob seine Voraussetzungen in der gültigen Range liegen und sagen: Ich brauche npm 0.0.7 bis 0.8.15. Du hast npm 47.11.
wie soll er das machen, wenn du an ihm vorbei node, und vor allem npm, auf eine zu hohe Version setztst?
Wenn der arme Controller dann wieder arbeitet ist es schon passiert.Dann müssten die Macher von npm es so programmieren, dass vor der Installation von npmv8 überprüft wird ob alle existierenden Programme damit schon zurechtkommen.
Ich glaube nicht, dass npm das machen wird!Und das Problem, dass Homebridge die ioBroker Installation killt, ist hier im Forum schon öfters besprochen worden.
Wo ist das Problem, bei einem iob upgrade eine Abfrage einzubauen?
Prosa: if (npm < 007 || npm > 0815) print "fuck off" && exitAber ich seh schon: Vorschläge machen ist unpopulär.
Nix für ungut.
Btw. hat homebridge bei mir noch nie die iobroker Installation gekillt und das war auch gar nicht das Thema. Ich sagte, ich habe hier noch andere Abhängigkeiten, wie zum Beispiel ...
-
@aski71 sagte in iobroker upgrade: js-controller futsch:
Aber ich seh schon: Vorschläge machen ist unpopulär.
das siehst du falsch!
@aski71 sagte in iobroker upgrade: js-controller futsch:
Wo ist das Problem, bei einem iob upgrade eine Abfrage einzubauen?
Die Abfrage muss vorher erfolgen wenn npm aktualisiert wird (z.B. von Homebridge)
Danach ist es zu spätAnders herum ist es ja drin. Da werden die Abhängigkeiten geprüft wenn node, der controller oder der admin zu niedrige Versionen haben