Guten Tag,
neuer Nutzer und schon nur Probleme. Sorry.
Habe versucht, iobroker unter Ubuntu zu installieren. beim Aufruf von ./iobroker setup blieb das Programm hängen. Habe mehrere Versuche mit jeweils neuem Ubuntu (Ubuntu Server 14.04 LTS) unternommen. Verschiede node.js Versionen ausprobiert (sowohl Distro als auch neueste Versionen), hat aber keine Änderung gebracht. Da ich zwischenzeitlich auch Ubuntu im Verdacht gehabt habe, habe ich es auch mit Debian probiert. Auch hier dasselbe. Es scheint also nicht mit Ubuntu direkt zusammen zu hängen.
Um den Problem auf die Schliche zu kommen, habe ich versucht nachzuvollziehen, warum das Programm hängen bleibt:
Beim Start von ./iobroker setup wird → node /opt/iobroker/lib/setup.js mit dem Argutemnt „setup“ ausgeführt – ok
setup.js wertet als erstes die Argumente aus. Es wird das Argument „setup“ korrekt erkannt und es wird die Funktion setup() aufgerufen. Hierzu später.
Eigentlich sollte durch den Aufruf der Funktion setup auch anschließend das Programm beendet werden. Setup wird eine entsprechende Funktion übergeben. Da diese wohl nicht ausgeführt wird, wird die case-Struktur mit dem break-Statement unterbrochen und das Programm landet in einer Endlosschleife: Hier sollte drigend nachgebessert werden, indem nach dem Aufruf der Funktion setup() noch ein Hinweis auf den Fehler per console.log gegeben wird und anschließend das Programm mit process.exit beendet wird. Deshalb bleibt das Programm hängen.
Nun weiter zum Ablauf des Programms:
Aufruf der Funktion setup()
Der Funktion setup wird als Parameter eine Funktion übergeben, die einen einzigen Funktionsaufruf enthält: process.exit();
Zunächst wird die iobroker.json erzeugt, sofern noch nicht vorhanden.
Diese sieht bei mir so aus:
{"network":{"IPv4":true,"IPv6":true,"bindAddress":null},"couch":{"host":"127.0.0.1","port":5984,"user":"","pass":""},"redis":{"host":"127.0.0.1","port":6379,"options":{"auth_pass":null,"retry_max_delay":15000}},"log":{"level":"info","transport":{"syslog1":{"type":"syslog","enabled":false,"host":"127.0.0.1","port":"514","protocol":"udp4","facility":"local0"},"file1":{"type":"file","enabled":true,"filename":"log/iobroker.log","maxsize":null,"maxFiles":null}}}}
Dann wird die io-package.json eingelesen nach iopkg. Wegen der Länge der Datei, habe ich diese nicht eingefügt.
Dann wird dbConnect aufgerufen. Als Parameter wird „dbSetup(iopkg, callback);“ übergeben.
Was hier gemacht wird, habe ich nicht verstanden. Die Funktion dbSetup() wird jedenfalls nicht aufgerufen. Falls mir jemand erklären könnte, was hier die Funktion machen sollte, komme ich vielleicht auch selber weiter.
In couchdb sind keine Einträge vorhanden. Webinterface funktioniert.
Ich hoffe, das hilft für einen Tip. Da andere wohl auch an dieser Stelle gescheitert sind, könnte es spannend werden.
Nur um einen Mecker vorzubeugen: Habe neuen Thread eröffnet und nicht im Ubuntu Thread gepostet, da das Problem nicht zwingen Ubuntu spezifisch ist.