NEWS
node.js update Quelle?
-
Hallo,
ich verwende ioBroker auf einem ubuntu v18 (Server). Hier habe ich Schwierigkeiten mit dem Update von node.js:
ioBroker.info sagt: v8.15.0 (There is a newer version: v8.16.2 - Recommended version v10.17.0)
Das ist schon einmal merkwürdig, da:
root@vm:/opt/iobroker# node -v
v8.16.2aber immerhin:
root@vm:/opt/iobroker# nodejs --version
v8.15.0... so also erklärt sich wenigstens die Ausgabe des ioBroker-Info-Moduls.
Nun habe ich nach der Anleitung hier versucht, node.js v10 zu installieren. Das ging total in die Hose: Danach startete zwar ioBroker noch, aber der sql-Adapter beklagte sich über die neue Version und "npm rebuild" lief auch nicht mehr - irgendein Rechte-Fehler.
Kurz - ich bin auf ein Backup zurück und mein System läuft jetzt wieder mit v8.15.0 (laut ioBroker) und v8.16.2 (laut nvm).
Wie sollte ich denn beim nächsten Versuch am besten vorgehen? Offenbar zerschießt der Anlauf über apt-get irgendetwas. Sollte ich die v10 nächstesmal per nvm installieren? Aber wie werde ich dann die alte v8.15.0 los, die noch irgendwo im System schlummert? Kann ich die einfach verlustfrei per apt-get purge entfernen? Und findet ioBroker dann auch statt dessen die neue Version, die über nvm installiert wurde?
MfG
-
@150d
ggf. hast du 2 node-Versionen laufen.
gerade die 8.15.macht mich stutzig.Das ist hier schon mal vorgekommen, dass Ubuntu ein eigenes Repo hat und daraus installiert und deine Installation nicht sauber durchgeführt wurde
-
@150d da muss ich homoran zustimmen .. du hast 2 Versionen laufen... das wird auf dauer nicht gut gehen
ls -l /usr/local/bin/node* ls -l /usr/bin/node*
zeigmal die Ausgabe
-
Gerne:
root@vm:~# ls -l /usr/local/bin/node* ls: Zugriff auf '/usr/local/bin/node*' nicht möglich: Datei oder Verzeichnis nicht gefunden root@vm:~# ls -l /usr/bin/node* -rwxr-xr-x 1 root root 34990576 Dez 26 2018 /usr/bin/node lrwxrwxrwx 1 root root 24 Okt 5 2018 /usr/bin/nodejs -> /etc/alternatives/nodejs
Interessant ist vielleicht auch das:
root@vm:~# nvm ls -> v8.16.2 system default -> 8.16.2 (-> v8.16.2) node -> stable (-> v8.16.2) (default) stable -> 8.16 (-> v8.16.2) (default) iojs -> N/A (default) lts/[Stern] -> lts/erbium (-> N/A) lts/argon -> v4.9.1 (-> N/A) lts/boron -> v6.17.1 (-> N/A) lts/carbon -> v8.16.2 lts/dubnium -> v10.17.0 (-> N/A) lts/erbium -> v12.13.1 (-> N/A) root@vm:~# nodejs -v v8.15.0
Daß da zwei Versionen installiert sind, dürfte klar sein; aber warum verwendet ioBroker nicht die neuere von beiden? Wenn nvm schon behauptet, daß die v8.16.2 der "default" sei?
MfG
-
@150d sagte:
/usr/bin/nodejs -> /etc/alternatives/nodejs
Das ist ein Symlink, den Du "umbiegen" solltest auf /usr/bin/node (z.B. mit WinSCP).
@150d sagte in node.js update Quelle?:
aber warum verwendet ioBroker nicht die neuere von beiden?
Wenn ioBroker neu gestartet wird, passiert das auch, denn ioBroker verwendet node und nicht nodejs.
-
Das ist ein Symlink, den Du "umbiegen" solltest auf /usr/bin/node (z.B. mit WinSCP).
Ah, danke.
Das habe ich jetzt getan:
root@vm:/opt/iobroker# ls -l /usr/bin/node* -rwxr-xr-x 1 root root 34990576 Dez 26 2018 /usr/bin/node lrwxrwxrwx 1 root root 13 Dez 15 16:11 /usr/bin/nodejs -> /usr/bin/node
... und ioBroker neu gestartet (iobroker stop/iobroker start).
ioBroker.info zeigt aber das selbe wie zuvor:
Node.js v8.15.0 (There is a newer version: v8.16.2 - Recommended version v10.17.0)
MfG
-
In meiner Info wird auch eine neue Version angezeigt.
Mit
iobroker update
und
iobroker upgrade self
wird mir aber ausgegeben, dass alle Adapter aktuell sind.
Kann ich die Node.js auch anders aktualisieren? -
-
Danke!
-
-
Ich komme hier nicht recht weiter. Zuerst hatte ich folgendes:
node -v
v8.16.2nodejs -v
v8.15.0ioBroker:
v8.15.0Daraufhin habe den link in /usr/bin/nodejs geändert
von: /usr/bin/node
nach: /root/.nvm/versions/node/v8.16.2/bin/node (der Pfad, auf den "where node" bereits wies)Jetzt habe ich:
node -v
v8.16.2nodejs -v
v8.16.2aber ioBroker immer noch:
v8.15.0Wieso das denn nun wieder? Warum folgt ioBroker nicht dem Link?
MfG
-
@150d sagte in node.js update Quelle?:
Wieso das denn nun wieder?
Weil du zweimal node an verschiedenen stellen installiert hast
-
@Homoran Vielen Dank, auf die Idee war ich gekommen. Siehe Post #1.
Aber wie werde ich das Chaos los?
Ein Problem könnte sein, daß v8.16 unter /root installiert ist. Soll das so sein?
MfG
-
@150d sagte in node.js update Quelle?:
Aber wie werde ich das Chaos los?
lies dir mal die Lösung von Paul durch:
https://forum.iobroker.net/topic/29718/npm-installation-nach-anleitung -
Danke für den Link. War interessant, auch wenn er nicht direkt meinen Fall berührte:
Mein Problem war offenbar, daß irgendjemand oder irgendetwas (kann ich selbst gewesen sein, aber vielleicht auch ein älteres install-script) die Version v8.16 von nodejs per NVM installiert hatte. NVM ist offenbar nur root zugänglich, und deshalb landete diese Version unter /root/.nvm. Dort kam aber der user iobroker nicht hin. Für iobroker gab es daher die v8.16 nicht, sondern nur die v8.15 (system).
Wurde nun nodejs v10 per apt-get installiert, änderte das nichts: Offenbar "gewann" trotzdem die NVM-Konfiguration mit v8.16, an die iobroker nicht hinkam, und der fallback war v8.15, nicht v10.
Ich habe nun (als root) per NVM die v8.16 entfernt (vorher musste "system" zur "default" gemacht werden, weil NVM die aktive Version nicht deinstallieren kann) und danach per apt-get die v10 installiert. Danach ergab sowohl "node -v" als auch "nodejs -v" die Version v10, unter root ebenso wie unter user iobroker (per sudo).
Dann aber lief "npm rebuild" nicht durch (verschiedene Fehler und Abbrüche.) Hier war das Problem, daß das unter dem user iobroker ausgeführt werden muß. Ein Aufruf mit "sudo -u iobroker" reicht nicht. Darauf war ich lange nicht gekommen, weil für den user iobroker keine Shell angegeben und somit keine interaktive Anmeldung möglich ist - da das explizit so drinstand nahm ich an, daß das schon so richtig sei.
War es aber nicht. Nachdem ich schließlich den Shell-Eintrag änderte und mich als user iobroker anmeldete, lief auch "nvm rebuild" ohne Fehler (mit Ausnahme einer fehlenden Bibliothek, die manuell nachinstalliert werden musste) durch.
MfG
-
@150d sagte in node.js update Quelle?:
auch wenn er nicht direkt meinen Fall berührte:
Doch das tat er.
Du hattest zwei Installationen, warum auch immer
Die mussten BEIDE deinstalliert werden. zu erkennen leider nur daran, dass die eine mit nodejs, die andere mit node zu finden warhätten beide die selbe Version gehabt wäre es schwieriger geworden.
Erst nach der Deinstallation von BEIDEN node-Installationen kann die neue erfolgreich sein, ohne durch die andere maskiert zu werden.
@150d sagte in node.js update Quelle?:
Danach ergab sowohl "node -v" als auch "nodejs -v" die Version v10
Das ist dann leider kein Garant mehr doch nicht zwei Installationen zu haben.