NEWS

Wichtige Hinweise bei neueren npm-Versionen und sudo


  • Developer

    Es kursieren überall alte Anleitungen zur Installation und Update von Adaptern, die mit neueren npm-Versionen zu Problem führen können. Speziell bei Kombination von sudo mit npm-Kommandos tritt dabei folgender Fehler (oder Varianten davon) auf:

    Error: EACCES: permission denied, scandir '/root/.npm/_logs'
    

    Daher bitte bei manuellen Installationen folgende Regeln beachten:

    1. Wann immer es zu vermeiden geht, kein sudo vor npm-Befehle setzen.

    2. Wenn es doch unbedingt nötig ist, unbedingt die Option -H angeben. --unsafe-perm vermeidet außerdem Probleme bei Installationsskripten. Also so

    sudo -H npm [Rest des Befehls] --unsafe-perm
    

    3. Ist man als root angemeldet (z.B. weil es keinen nicht-root-User gibt), empfiehlt sich bei der Adapter-Installation die Option --unsafe-perm anzugeben. Also

    npm install [Adaptername] --unsafe-perm
    

    4. Wurde zu früherem Zeitpunkt Regel 1 oder 2 missachtet, dann kann der ioBroker-Fixer Abhilfe schaffen:

    iobroker fix
    

    5. Für die iobroker-Befehle ist übrigens auch kein sudo nötig.



  • Ich möchte auch gleich mal was los werden:

    nachdem man IOboker istalliert hat, muß man bei Ubuntu server 18.04 server

    noch npm i --production --unsafe-perm eingeben, damit die IObroker-Installation läuft.

    Gruß,

    Mathias



  • Das ist so nicht ganz korrekt. Wie hast Du es denn installiert? NIcht nach der NEUEN Installationsmethode mit dem Shell-Skript … sondern Du hast es normal nach "altem Weg" installiert. Dann bekommst Du am Ende eine Ausgabe das Du genau dies tun musst.

    ABER NUR DANN!!!



  • ich möchte jetzt nicht mit Dir streiten, aber warum existiert dann der alte Weg noch?

    bzw wo finde ich den neuen?

    gruß,

    Mathias


  • Forum Testing Most Active Global Moderator Administrators



  • @MathiasJ:

    ich möchte jetzt nicht mit Dir streiten, aber warum existiert dann der alte Weg noch?

    bzw wo finde ich den neuen?

    gruß,

    Mathias `
    Weil der neue Weg über ein vom iobroker Server geladenes Shell Skript vertrauen voraussetzt User gibt die das vllt nicht wolle. Weiterhin funktioniert das nur auf Linux. Windows Nutzer müssen es anders machen bis wir eine powershell Lösung haben.

    Also: es hat seine Gründe!!

    Gesendet vom Handy …



  • @Homoran

    Danke! Habe es soeben gespeichert.

    aber die alte Version geht unter Linux immer noch?

    Oder muß ich Iobroker wieder neu aufsetzen?

    Gruß,

    Mathias


  • Forum Testing Most Active Global Moderator Administrators

    Was meinst du mit "alte Version"

    Wen du den in der Anleitung unten dokumentierten alten Weg der Installation meinst, geht der natürlich noch.

    Unter Berücksichtigung der weiteren Hinweise bezüglich root und sudo sowie autostart.

    ` > Ansonsten steht der “alte” Weg auch noch zur Verfügung. Dafür bitte den unten stehen Abschnitt “Installation ioBroker” ignorieren und den darauf folgenden Abschnitt “Installation ioBroker (alter Weg / optional)” nutzen.

    Allerdings muss man dann die Ausgaben der Installation genau beachten, da man im Anschluss die eigentliche Installation selber manuell starten muss. Danach müssen dann noch 3 weitere Befehle manuell eingegeben werden, um die Autostart-Funktion von ioBroker sicher zu stellen `

    Gruß

    Rainer



  • danke Rainer,

    ich habe nicht gewußt, dass es nun einen neuen Weg gibt. deshalb habe ich komplett den alten genutzt.

    http://www.iobroker.net/docu/?page_id=8 … g_optional

    Der neue Weg steht bei meiner Liste nun ganz oben, für weitere Installationen.

    Nun habe ich 2 Instanzen, die gar nicht mehr so recht wollen.

    ich habe das in den richtigen Foren gepostet.

    Gruß,

    Mathias


  • Developer

    @MathiasJ:

    ich habe nicht gewußt, dass es nun einen neuen Weg gibt. deshalb habe ich komplett den alten genutzt.

    http://www.iobroker.net/docu/?page_id=8 … g_optional `

    Der alte, den du da verlinkt hast, funktioniert auch. Schließlich benutzt das Installer-Skript diesen unter der Haube.

    Man muss nur genau lesen:
    > Bitte auf die Ausgaben der Installation achten. Die endgültige Installation muss manuell gestartet werden – die dazu notwendigen Schritte werden auf dem Bildschirm ausgegeben.
    Und eine dieser Ausgaben bezieht sich auf den Befehl, den du oben erwähnt hast.



  • Wenn ich gemäß der Anleitung zum Update auf v.8 folgendes eingebe:

    curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
    
    ````dann erhalte ich folgende Fehlermeldung
    

    sudo: Fehler in /etc/sudo.conf, Zeile 0, während Plugin »sudoers_policy« geladen wurde
    sudo: /usr/lib/sudo/sudoers.so darf nur vom Besitzer beschreibbar sein
    sudo: Schwerwiegender Fehler, Plugins konnten nicht geladen werden

    
    Ich habe eine Installation auf Docker Basis und bin dort immer als root unterwegs.
    
    Jemand eine Idee?


  • Meiner Meinung nach brauchst Du kein sudo wenn du eh Root bist.



  • ja, aber wie lautet dann der richtige Befehl?


  • Developer

    @BBTown:

    ja, aber wie lautet dann der richtige Befehl? `
    Schau dir deinen Befehl mal an, such das "sudo" und lass es weg 😉



  • hahaha …. ja, so weit war ich auch schon 8-)

    curl -sL https://deb.nodesource.com/setup_8.x | -E bash - 
    

    Antwort:

    bash: -E: Kommando nicht gefunden.  
    

    daher ja meine Frage ob jemand den korrekten Befehl nennen kann … 😉



  • curl -sL https://deb.nodesource.com/setup_8.x | bash - 
    

    das scheint zu passen …



  • -E gehört zu sudo.

    Aus der https://github.com/nodesource/distributions/blob/master/README.md:

    # Using Debian, as root
    curl -sL https://deb.nodesource.com/setup_8.x | bash -
    apt-get install -y nodejs
    


  • ja, danke dir

    da macht sich mal wieder bemerkbar, wie wenig Linux know-how ich habe und dass ein Normalsterblicher sich immer wieder mit der Syntax schwer tut.


  • Developer

    Sorry, das hätte ich natürlich auch erwähnen können 😄


  • Starter

    Ich bekomme die Fehlermeldung leider beim Autostart (beim manuellen Starten über die Konsole tritt der Fehler nicht auf):

    Error:	2018-12-21 00:06:14.553	error	at Timer.listOnTimeout (timers.js:290:5)
    Error:	2018-12-21 00:06:14.553	error	at tryOnTimeout (timers.js:323:5)
    Error:	2018-12-21 00:06:14.553	error	at ontimeout (timers.js:498:11)
    Error:	2018-12-21 00:06:14.553	error	at Timeout.saveConfig [as _onTimeout] (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:1897:16)
    Error:	2018-12-21 00:06:14.553	error	at Object.fs.writeFileSync (fs.js:1299:33)
    Error:	2018-12-21 00:06:14.553	error	at Object.fs.openSync (fs.js:646:18)
    Error:	2018-12-21 00:06:14.553	error	EACCES: permission denied, open '/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/../../../../iobroker-data/objects.json.bak'
    uncaught	2018-12-21 00:06:14.551	error	exception: EACCES: permission denied, open '/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/../../../../iobroker-data/objects.json.bak'
    
    

    Ich habe das System extra noch mal neu aufgesetzt, der Fehler besteht aber immer noch. Installiert ist ioBroker in einer Debian-VM unter Proxmox. Beim Installieren habe ich folgende Schritte durchgeführt:

    1. ioBroker exakt nach dem neuen Weg installiert: http://www.iobroker.net/docu/?page_id=8323&lang=de

    2. Auf meinem alten Raspi via Backitup-Adapter ein Komplett-Backup erstellt. Auf dem Raspi tritt das Problem übrigens nicht auf.

    3. Backup wie in der Anleitung zum Backitup-Adapter beschrieben auf dem neuen System erfolgreich eingespielt.

    4. ioBroker gestartet.

    ioBroker selbst läuft bei manuellem Start absolut problemlos, nur der Autostart will nicht. "sudo chown -R $(whoami) ~/.npm" hat leider auch nicht geholfen.

    Hat jemand noch eine Idee?


Log in to reply
 

Suggested Topics

  • 4
  • 1
  • 5
  • 2
  • 13
  • 5
  • 3
  • 34

1.8k
Online

29.8k
Users

36.9k
Topics

494.1k
Posts