Ein kurzes Update (gültig für Linux im Moment):
Habe bemerkt dass nach updates des Raspi auf neues Pixel und auf Node 6.9.2/npm 4.0.5 einige Adapter nicht mehr richtig liefen.
Speziell Adapter die Module kompilieren mussten waren betroffen (rpi2 z.B., GPIO lief nicht mehr).
Die Adapter zeigten 'grün' aber funktionierten nicht.
Na gut, also reinstall.sh
Da bin ich draufgekommen dass reinstall.sh auch 2x installiert!
#!/bin/bash
iobroker stop
ls -1 ./node_modules | grep iobroker. > list.txt
cd node_modules;
rm * -R
cd ..
while read in; do npm install $in --production; cd node_modules/$in/; npm install --production; cd ../..; done < list.txt
chmod 777 * -R
rm list.txt
iobroker upload all
Also schrieb ich mein eigenes reinstall:
#!/bin/bash
sudo iobroker stop
ls -1 ./node_modules | grep iobroker. > list.txt
cd node_modules;
sudop rm * -R
cd ..
sudo rm iobroker
while read in; do npm install $in --production --prefix /opt/iobroker ; done < list.txt
chmod 777 * -R
#rm list.txt
sudo npm install iobroker --unsafe-perm
iobroker upload all
sudo iobroker start
Auf meinem Testsystem war nach dem originalem Reinstall im ioBroker-Verzeichnis 369MB verbraucht (gemessen mit du -sh .).
Mit meinem script waren nur 207MB verbraucht!
IoBroker lief genauso und das rebuild dauerte halb so lang.
Wie man sehen kann installierte ich alle Adapter OHNE sudo, nur iobroker selbt braucht sudo.
Dann hab ich einen anderen Test gestartet: Alles mit Sudo aber ohne –
#!/bin/bash
sudo iobroker stop
#ls -1 ./node_modules | grep iobroker. > list.txt
cd node_modules;
sudop rm * -R
cd ..
sudo rm iobroker
while read in; do sudo npm install $in --production; done < list.txt
chmod 777 * -R
#rm list.txt
sudo npm i iobroker --unsafe-perm
sudo iobroker upload all
sudo iobroker start
Das Ergebnis waren 211MB Speicher (immer gemessen in ioborker-Verzeichnis).
Diese Version lief etwas besser als die Vorige (erzeugte weniger Fehler da einige Adapter oder Module ihre subModule im node_modules Unterverzeichnis erwarten) UND Installationen unter Admin mir root (=sudo)-Rechten ablaufen!
Meine Conclusio:
Das Problem besteht durch die Unterschiedliche Nutzung von root und "–prefix /opt/iobroker".
"--prefix /opt/iobroker" speichert die Module in opt/iobroker/node_modules und nicht im Unterverzeichnis vom Adapter.
Da Adapter unterschiedlich (nicht nur mit Admin) installier werden sind sie oft als Benutzer oder root installiert was zusätzlich Probleme verursacht.
Mein Vorschlag deshalb:
Adapter sollten ohne Root installierbar sein
Zweistufige Installation (mit submodulen im Adapter und Submodulen in iobroker sollten vermieden werden.
Alle batch-scripts sollten klar sudo/user-Rechte definieren
Möglicherweise sollte ioBroker unter einem eigenen User laufen (und nur Adapter die root brauchen darauf zurückgreifen)
Momentan verwendet ioBroker verschiedene Strategien um einzelne Adapter-Probleme zu lösen. Meiner Meinung nach wäre es besser die Adapter an die ioBroker-Strategie zu binden.