NEWS
Installation Ubuntu/Debian: Fehler bei ./iobroker setup
-
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.
-
Hallo gst und Willkommen im Forum,
Bis du zu einem neuen User wirst wird es noch etwas dauern
ioBroker ist noch in der Entwicklung und (wahrscheinlich) nicht mal (oder gerade so eben) in der Beta-Phase.
Zu Ubuntu gibt es bereits einen Thread http://forum.iobroker.org/viewtopic.php?f=8&t=217.
Leider kenne ich mich mit Ubuntu nicht aus, dort scheinen aber die Pfade anders zu liegen als bei wheezy. Daher läuft es nicht mit der "normalen" Einstellung.
Was couchDB angeht, ist diese seit der letzten Umstrukturierung NICHT mehr notwendig. http://forum.iobroker.org/viewtopic.php?f=8&t=236#p1526
Ich bin gerade dabei die Anleitung anzupassen.
Da es aber in der letzten Zeit wegen der Umstrukturierung sehr viele Änderungen gegeben und ich diese gerne auf "allen" Plattformen testen möchte bevor ich die Anleitung freigebe, kann das noch etwas dauern
Gruß
Rainer
-
Ist mir klar, dass die Entwicklung noch ein wenig andauern wird. Habe auch keine überspannten Erwartungen und freue mich, wenn ich vielleicht auch etwas Beitragen kann.
Den Ubuntu Thread habe ich gesehen, hat aber leider nicht geholfen. Unter Debian (amd64) habe ich wie gesagt dasselbe Problem.
Schön (zumindest zur Zeit) das CouchDB nicht verwendet wird. Damit ist eine Fehlerquelle ausgeschlossen. Mein Verdacht ist, dass die Verbindung zu der Dankenbank nicht klappt. Leider verstehe ich den Code nicht:
objects = new Objects({ logger: { debug: function (msg) { }, info: function (msg) { }, warn: function (msg) { console.log(msg); }, error: function (msg) { console.log(msg); } }, connected: function () { if (typeof callback === 'function') callback(); // restore all objects } });
Vielleicht könntest Du mir einen kleinen Wink mit der Zaunlatte geben. Debugge ich wieder ein bischen weiter. Ist das die Stelle, an der die Verbindung zu der Datenbank hergestellt wird?
Gerne bringe ich mich auch in das Projekt etwas ein. Zum Beispiel könnte ich ich auch etwas an der Doku schreiben, wenn ich das Ding zum Laufen gebracht habe. Javascript ist nicht ganz mein Fall. C oder C++ oder x86-Assembler eher. Halt Gruftie.
Herzlichen Gruß
Gerhard
-
Hallo Gerhard,
@Homoran:Vielleicht könntest Du mir einen kleinen Wink mit der Zaunlatte geben. `
Danke für die Blumen, aber ich kann kein javascript und auch kein Linux, ich hacke mich da auch immer wieder rein und trage mein Scherflein mit meinen bescheidenen Mitteln dazu bei.
Gruß
Rainer
-
Jetzt habe ich den Grund gefunden, warum kein Kontakt zu einer Datenbank hergestellt wird. Neben CouchDB wurde auch Redis entfernt (vgl. https://github.com/ioBroker/ioBroker.js … ANGELOG.md). Anscheinend werden alle Zustände zur Zeit intern gespeichert.
Dann ist also frohes Weitersuchen angesagt.
Gruß Gerhard
-
Interessantes Ergebnis:
Eben habe ich einfach das System gestartet mit "./iobroker start". Danach war ich abgelenkt und habe vergessen, das System zu beenden und habe mich wieder an das Ausführen von dem Setup gemacht. und es … ging. Die anderen Schritte auch. Werde spätestens im nächsten Jahr dieses noch mal prüfen. Vielleicht wird bei setup.js eine wichtige funktion nicht gestartet. Ich vermute, dass dieses Problem dem Umstand geschuldet ist, dass die Datenbanklen deinstalliert wurden. Bei chouchdb scheint diese aber wieder integriert zu sein, da das log-File eine Verbindung zu chouchdb protokolliert hat.