NEWS
Node JS Update von v8 auf V10 schlägt fehl
-
@samsungfreak Ja, jetzt scheint es ok zu sein.
Du fährst ein Debian, oder? Im Docker?
root-Login macht mich immer ganz nervös. Da kann man so schön alles verbiegen...
Was kommt denn beils -la /usr/local/bin
rum?
-
Zum Topic - aber nicht speziell zum letzten post:
Ich habe nun 2 Major Version Upgrades erfolgreich durchgeführt. 8-10-12
Egal ob im Master (docker auf QNAP) oder den clients (RBP3b+) es klappte nie ohne "n" auch wenn alles korrekt installiert wurde, habe ich immer die alte version angezeigt bekommen (node -v). Mit "n" ist das gelöst. Hier mein Weg der immer klappte mit "n" - falls ihr "n" nicht habt - geht einfach ins system "sudo npm install -g n" bzw hier nachlesen https://www.npmjs.com/package/nUnter dem user "pi" auf den raspb 3b+ bzw unter dem container user:
cd /opt/iobroker/
iobroker stop
iobroker backup
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo n 12.16.3
sudo npm install npm@latest -g
node -v
npm -v
npm rebuild
curl -sL https://iobroker.net/fix.sh | bash -
iobroker startViel Erfolg
Wolfgang
-
@realwax said in Node JS Update von v8 auf V10 schlägt fehl:
sudo apt-get install -y nodejs
sudo n 12.16.3Da machst du aber Dinge doppelt. Das könnte früher oder später wieder zu Problemen führen. Zum einen ziehst du über apt/dpkg ein nodejs inkl. node und npm aus dem nodesource-Repository, zum anderen auf einem zweiten, davon unabhängigen Weg über n dann nochmal ein separates node 12.16.3.
Das liegt dann in $HOME/n bzw. $HOME/n/bin und dürfte eigentlich dann dort auch nicht mehr genutzt werden, dennpi@raspberrypi:~ $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
Im besten Fall ist es überflüssig, stört aber auch nicht weiter; im blödsten Fall stolpert man doch noch irgendwie drüber.
-
@Thomas-Braun sagte in Node JS Update von v8 auf V10 schlägt fehl:
@samsungfreak Ja, jetzt scheint es ok zu sein.
Du fährst ein Debian, oder? Im Docker?
root-Login macht mich immer ganz nervös. Da kann man so schön alles verbiegen...
Was kommt denn beils -la /usr/local/bin
rum?
Genau es handelt sich um ein Debian System aber ganz normal als VM (VMware) und nicht im Docker.
Hier die Ausgabe:root@Broker:~# ls -la /usr/local/bin insgesamt 8 drwxrwsr-x 2 root staff 4096 Feb 18 2017 . drwxrwsr-x 10 root staff 4096 Feb 11 2017 ..
-
@samsungfreak Dann gewöhn dir das root-Login ab!
Im Docker muss das wohl so sein, weil da sudo nicht funktioniert. Aber in einer VM muss das wie üblich funktionieren. -
@Thomas-Braun Aber zum "Problem" zurück. Für mich sieht soweit alles gut aus oder wie seht ihr das? Es ging ja darum, dass ich über den Paketmanager Node nicht deinstallieren konnte (Paket »node« ist nicht installiert, wird also auch nicht entfernt.)
-
Danke. Ja, ich weiß ich installiere quasi 2 mal hintereinander. Bei der installation via apt/dpkg stellen sich meine Versionen nicht um, dennoch versuche ich aber grundsätzlich es in sync zu halten. Nur mit "n" klappt bei mir der Versionsumstieg.
Das war von anfang an so?!?
pi@ioBrokerPIB3:~ $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/gamesUnter $HOME egal ob pi oder root habe ich allerdings kein "n" Verzeichnis.
node/8.16.0 node/10.16.3 node/10.17.0 node/10.19.0
ο node/12.16.3
root@ioBrokerPIB3:/usr/local/n/versions/node# ls
10.16.3 10.17.0 10.19.0 12.16.3 8.16.0root@ioBrokerPIB3:/usr/bin#
lrwxrwxrwx 1 root root 24 Nov 13 07:46 nodejs -> /etc/alternatives/nodejs
lrwxrwxrwx 1 root root 38 Apr 29 18:27 npm -> ../lib/node_modules/npm/bin/npm-cli.js
-rwxr-xr-x 1 root root 40517516 Apr 28 11:22 noderoot@ioBrokerPIB3:/usr/bin# ls -la /etc/alternatives/nodejs
lrwxrwxrwx 1 root root 13 Nov 13 07:46 /etc/alternatives/nodejs -> /usr/bin/nodeAlso von meinem Standpunkt sieht es so aus, als hätte "n" gelöst, was bei apt fehlschlug, ohne error. Nämlich, dass die version auch vorhanden und aktiv ist.
Ich weiß leider nicht mehr und lerne gerne dazu. Aber erst "n" hat es wie gesagt für mich gelöst.
-
nodejs -v node -v npm -v apt policy nodejs
Als user, nicht als root und auch nicht per sudo!
Es ging ja darum, dass ich über den Paketmanager Node nicht deinstallieren konnte (Paket »node« ist nicht installiert, wird also auch nicht entfernt.)
Das ist bei dem nodejs von nodesource korrekt. node ist da kein eigenes Paket sondern kommt huckepack bei nodejs mit. Ist in meinem System natürlich auch nicht (als autarkes Paket über den Paketmanager) installiert:
pi@raspberrypi:/opt/iobroker $ apt policy node node: Installiert: (keine) Installationskandidat: 0.3.2-7.4 Versionstabelle: 0.3.2-7.4 500 500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages
Im $PATH liegt das natürlich:
pi@raspberrypi:~ $ node -v v12.16.3
-
@realwax said in Node JS Update von v8 auf V10 schlägt fehl:
Nur mit "n" klappt bei mir der Versionsumstieg.
Das war von anfang an so?!?Das glaube ich nicht. Bei mir läuft ein Raspbian auch ohne n. Da ist irgendwas bei dir falsch gelaufen.
Offenbar installiert n (in einer root-Shell ohne ENVIRONMENT) direkt in /usr/local/n und linkt dann über alternatives nach /usr/bin/node
Da liegt aber eigentlich schon das binary von der nodesource-Installation.
Ist jedenfalls in meinem System (ohne n) so:ls -la /usr/bin/node & ls -la /usr/bin/nodejs -rwxr-xr-x 1 root root 40517516 Apr 28 11:22 /usr/bin/node lrwxrwxrwx 1 root root 24 Apr 12 11:14 /usr/bin/nodejs -> /etc/alternatives/nodejs
Bei dir kannst du das mal mit
pi@raspberrypi:~ $ update-alternatives --display nodejs nodejs - automatischer Modus beste Version des Links ist /usr/bin/node Link verweist zur Zeit auf /usr/bin/node Link nodejs ist /usr/bin/nodejs Slave nodejs.1.gz ist /usr/share/man/man1/nodejs.1.gz /usr/bin/node - Priorität 50 Slave nodejs.1.gz: /usr/share/man/man1/node.1.gz
anschauen.
-
@Thomas-Braun said in Node JS Update von v8 auf V10 schlägt fehl:
update-alternatives --display nodejs
Das stimmt schon - ich hatte Probleme über den "normalen" Weg. Mit "n" lieft es dann.
pi@ioBrokerPIB3:~ $ update-alternatives --display nodejs
nodejs - automatischer Modus
beste Version des Links ist /usr/bin/node
Link verweist zur Zeit auf /usr/bin/node
Link nodejs ist /usr/bin/nodejs
Slave nodejs.1.gz ist /usr/share/man/man1/nodejs.1.gz
/usr/bin/node - Priorität 50
Slave nodejs.1.gz: /usr/share/man/man1/node.1.gzpi@ioBrokerPIB3:~ $ ls -la /usr/bin/node & ls -la /usr/bin/nodejs
-rwxr-xr-x 1 root root 40517516 Apr 28 11:22 /usr/bin/node
lrwxrwxrwx 1 root root 24 Nov 13 07:46 /usr/bin/nodejs -> /etc/alternatives/nodejs -
@realwax An deiner Stelle würde ich beim nächsten Update mal versuchen das ohne n hinzubekommen. Das muss gehen, wenn man es richtig anfängt.
-
@Thomas-Braun
Klar, hast du eine Idee wie? Nach der normalen installation, obwohl ohne fehler, geben mir node und npm -v die alten Versionen aus. Ich konnte es nur so lösen. Aber ich bin auch nicht tief in der Pfadstruktur der Installtion, versionswechsel etc drinnen. Das ist die eine oder andere Stunde arbeit und n macht den Job ohne probleme.
Wenn du einen guten Tipp hast versuche ich n loszuwerden. Dabei ist das genau mein Tipp wenn wer Probleme hat. -
@realwax Dazu müsste ich dir bei einem Update mal 'über die Schultern' schauen, um genauer zu sehen was du da für ein Setup hast und was da ggf. an Meldungen zurückkommt. Wenn der Paketmanager sauber aufgesetzt und genutzt wird ist ein update eine Sache von Sekunden, ein Versionsupgrade dauert dann unwesentlich länger. Lass es mal wenige Minuten sein.
-
@Thomas-Braun sagte in Node JS Update von v8 auf V10 schlägt fehl:
nodejs -v node -v npm -v apt policy nodejs
Als user, nicht als root und auch nicht per sudo!
Es ging ja darum, dass ich über den Paketmanager Node nicht deinstallieren konnte (Paket »node« ist nicht installiert, wird also auch nicht entfernt.)
Das ist bei dem nodejs von nodesource korrekt. node ist da kein eigenes Paket sondern kommt huckepack bei nodejs mit. Ist in meinem System natürlich auch nicht (als autarkes Paket über den Paketmanager) installiert:
pi@raspberrypi:/opt/iobroker $ apt policy node node: Installiert: (keine) Installationskandidat: 0.3.2-7.4 Versionstabelle: 0.3.2-7.4 500 500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages
Im $PATH liegt das natürlich:
pi@raspberrypi:~ $ node -v v12.16.3
Das sieht irgendwie nur so zu 50% gut aus. Oh man... (keine Angabe der Versionstabelle)..oder wie siehst du das?
Testuser123@Broker:~$ nodejs -v v12.16.3 Testuser123@Broker:~$ node -v v12.16.3 Testuser123@Broker:~$ npm -v 6.14.4 Testuser123@Broker:~$ apt policy node node: Installiert: (keine) Installationskandidat: (keine) Versionstabelle:
-
@samsungfreak Ist eigentlich ok, je nach Distribution.
Mach mal den Gegencheck:sudo apt update apt policy nodejs
-
@Thomas-Braun sagte in Node JS Update von v8 auf V10 schlägt fehl:
@samsungfreak Ist eigentlich ok, je nach Distribution.
Mach mal den Gegencheck:sudo apt update apt policy nodejs
Ok stimmt das sieht gut aus. Musste es aber "leider" als root ausführen damit mein Testuser keine apt Kommandos ausführen darf:
root@Broker:~# sudo apt update OK:1 http://security.debian.org stretch/updates InRelease Ign:2 http://ftp.de.debian.org/debian stretch InRelease OK:3 http://ftp.de.debian.org/debian stretch-updates InRelease OK:4 https://deb.nodesource.com/node_12.x stretch InRelease OK:5 http://ftp.de.debian.org/debian stretch Release Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Alle Pakete sind aktuell. root@Broker:~# root@Broker:~# apt policy nodejs nodejs: Installiert: 12.16.3-1nodesource1 Installationskandidat: 12.16.3-1nodesource1 Versionstabelle: *** 12.16.3-1nodesource1 500 500 https://deb.nodesource.com/node_12.x stretch/main amd64 Packages 100 /var/lib/dpkg/status 4.8.2~dfsg-1 500 500 http://ftp.de.debian.org/debian stretch/main amd64 Packages
-
@samsungfreak
Der testuser123 fehlt in der Gruppe 'sudo'.usermod -aG sudo Testuser123
alternativ
adduser Testuser123 sudo
Hast du keinen 'ordentlichen' ersten user angelegt, als du Debian installiert hast?
Und nochmal: Wenn du schon root bist, dann braucht es da auch kein 'sudo' mehr vor den commands.
-
@Thomas-Braun sagte in Node JS Update von v8 auf V10 schlägt fehl:
@samsungfreak
Der testuser123 fehlt in der Gruppe 'sudo'.usermod -aG sudo Testuser123
alternativ
adduser Testuser123 sudo
Hast du keinen 'ordentlichen' ersten user angelegt, als du Debian installiert hast?
Und nochmal: Wenn du schon root bist, dann braucht es da auch kein 'sudo' mehr vor den commands.
Mit dem zweiten Befehl hat es geklappt:
Testuser123@Broker:~$ sudo apt update Wir gehen davon aus, dass der lokale Systemadministrator Ihnen die Regeln erklärt hat. Normalerweise läuft es auf drei Regeln hinaus: #1) Respektieren Sie die Privatsphäre anderer. #2) Denken Sie nach, bevor Sie tippen. #3) Mit großer Macht kommt große Verantwortung. [sudo] Passwort für Testuser123: Ign:1 http://ftp.de.debian.org/debian stretch InRelease Holen:2 http://ftp.de.debian.org/debian stretch-updates InRelease [91,0 kB] OK:3 http://ftp.de.debian.org/debian stretch Release Holen:4 http://security.debian.org stretch/updates InRelease [94,3 kB] OK:5 https://deb.nodesource.com/node_12.x stretch InRelease Es wurden 185 kB in 1 s geholt (95,1 kB/s). Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Alle Pakete sind aktuell. Testuser123@Broker:~$ apt policy nodejs nodejs: Installiert: 12.16.3-1nodesource1 Installationskandidat: 12.16.3-1nodesource1 Versionstabelle: *** 12.16.3-1nodesource1 500 500 https://deb.nodesource.com/node_12.x stretch/main amd64 Packages 100 /var/lib/dpkg/status 4.8.2~dfsg-1 500 500 http://ftp.de.debian.org/debian stretch/main amd64 Packages
Nein leider habe ich damals noch keinen User angelegt und alles via root User erledigt. Werde ich in der Zukunft ändern:) Aber ich denke mein Problem worauf dieses Thema sich bezieht ist erledigt und ich habe das System sauber auf die Node JS Version 12 aktualisieren können mit eurer Hilfe:)
-
@samsungfreak Dann sollte das nun passen in dem System.
nodejs (im 12er-Zweig) kannst du jetzt mitsudo apt update sudo apt upgrade
aktuell halten. Zusammen mit dem restlichen System.
-
@Thomas-Braun Ja, alles an sich standard installationen mit apt/dpkg. Ich werde vermutlich bei meiner hybrid lösung bleiben, sofern es keine Probleme gibt und wenn, dann gehe das in der Tiefe an. Gerne mit Schulter schauen, wenn du Zeit und Lust hast.