Die Daemons sollten sich problemso unter einem UNIX OS (z.B. Linux) übersetzen lassen. Um die Daemons zu übersetzen, werden von der Downloadseite für Libs noch die folgenden Pakete benötigt:
Als externe Pakete werden die folgenden Libs benötigt:
Die Bibliotheken können einfach mit make in dem Verzeichnis übersetzt werden. Es wurde kein autoconf (configure) benutzt, da die Bibliotheken keine besonderen Vorraussetzungen haben und zum Teil schon auf 16-Bit Homecomputer (Atari ST) übersetzt wurden.
Es gibt im Makefile kein Target zum Installieren. Die Header Dateien können einfach "zu Fuß" in das Includeverzeichnis und die static libs in das Libverzeichnis kopiert werden. Das sollte auch einem UNIX System /usr/local/include bzw. /usr/local/lib sein. Alternativ kann im mrsystem Verzeichnis ein Verzeichnis include und ein Verzeichnis lib angelegt und die Dateien dort hin kopiert werden.
Die Dameons werden mit make im mrsystem Verzeicnis compiliert. Es gibt kein configure Script aus dem autoconf Paket.
Für die Auswahl der Pakete muß das Makefile editiert werden. Damit kann z.B. festgelegt werden, ob Daemons für can4linux, socketCAN oder auch die CC-Schnitte compiliert werden.
Das Makefile enthält die folgenden Targets:
Target | Erklärung | ||
---|---|---|---|
all (erstes Target) | compiliert die Daemons | ||
install | Installiert die Daemons nach /usr/local/bin, die Konfigdateien nach /etc und die Startupdatei nach /etc/init.d und legt anschließend die Links in die Runlevel an. | ||
install_apps | Installiert die Daemons nach /usr/local/bin | ||
install_web | Installiert die Webseiten nach /var/www | ||
clean_apps | löscht alle Objektdateien und Daemons (binaries) | ||
clean_link | löscht die erzeugten Daemons (binaries). Dies muß vor einem erneuten make durchgeführt werden, wenn Änderungen an den libs gemacht wurden. Die einzelnen Daemons sind nicht von den internen Libs abhängig, um die Makefiles nicht zu kompliziert und damit unüberischtlich werden zu lassen. | ||
clean_doku | löscht die per doxygen erzeugte Doku. | ||
clean | löscht alle erzeugten Dateien. | ||
doku | generiert die doxygen Doku. |
Um den client_gpios88
zur Abfrage des S88 Bus per GPIO auf dem BPi
zu übersetzen, muß das Projekt von Gerhard Bertelsmann parallel zu
dem mrsystem
liegen. Das Makefile greift direkt auf die
Originalsourcen zu. Dazu kann einfach eine Arbeitskopie des Repositorys
parallel zu mrsystem
angelegt werden. Dies ergibt dann die
folgende Verzeichnisstruktur:
|-- mrsystem | |-- client_cc | |-- client_cs2eth | |-- client_cs2sl | |-- client_gpios88 | ... | `-- www |-- railroad | |-- can2udp | | |-- config | | |-- files | | |-- msd | | |-- pictures | | `-- src | ...
Die Webseiten können entweder über das Makefile mit make install_web installiert werden, wenn der Dokumentroot /var/www. Achtung: wenn schon Webseiten vorhanden sind, wird möglicherweise die Indexseite überschrieben.
Alternativ können die Datein auch manuell kopiert werden. Wenn die Links angepaßt werden, können die Seiten auch in ein anderes Verzeichnis kopiert werden.
Egal wohin die Webseiten kopiert werden, es müssen einige Bedingungen erfüllt werden, damit auch externe Software damit zurecht kommt bzw. die Aktionen ausgeführt werden können.
Das Verzeichnis config enthält die *.cs2 Dateien. Dieses Verzeichnis muß unter dem Dokumentroot angelegt werden, damit Software, die diese Dateien über http anfordet, diese auch findet. Der absolute Pfad dieses Verzeichnisses ist auch in der Konfigdatei /etc/mrsystm einzutragen.
Das Verzeichnis icons enthält die Icons der Loks. Dieses Verzeichnis muß über den Dokumentroot abrufbar sein, damit Software, die diese Dateien über http anfordet, diese auch findet. Dieses Verzeichnis ist möglicherweise ein virtueller Pfad, wie z.B. unter dem Apache Webserver. Wenn keine weiteren Webseiten der virtuellen icons Verzeichnis nutzen, empfiehlt es sich, einen Eintrag für ein virtuelles icons Verzeichnis aus der Konfig des Webservers zu löschen. Danach kann unter dem Dokumentroot ein Verzeichnis icns abgelegt werden.
Unter dem Doku Verzeichnis kann ein Verzeichnis mrsystem engelegt werden, wohin der Inhalt des doku Verzeichnis aus dem Quellcode kopiert werden kann. Damit steht dann auch eine Doku der Webconfig auf dem Gerät zur Verfügung.
Es muß natürlich darauf geachtet werden, daß die Dateien für Besitzer, der Gruppe und den Rest der Welt lesbar sind. Die Verzeichnisse müssen zuätzlich für den Besitzer, der Gruppe und den Rest der Welt "betretbar" (also executable Flag) sein. Die Shellskripts müssen natürlich für den Besitzer, der Gruppe und den Rest der Welt ausführbar sein.
Die Shellskripte müssen einige Operationen mit entsprechenden Rechten ausführen können. Z.B. kann eine Installation eines Updates der Binarys des mrsystem nur mit root Rechten erfolgen. Deshalb müssen einige Einräge in der Datei /etc/sudoers vorhanden sein, damit die Befehle mit su ausgeführt werden können.
Dienst | Eintrag in sudoers |
---|---|
reboot device | ALL ALL=NOPASSWD: /sbin/reboot |
halt device | ALL ALL=NOPASSWD: /sbin/halt |
replace config | ALL ALL=NOPASSWD: /bin/sed |
update | ALL ALL=NOPASSWD: /tmp/update.sh |
Achtung: die Datei /etc/sudoers ist auch für den
Besitzer root nur lesbar!
Die verschiedenene Programme, die mit root Rechten ohne Eingabe eines Passwords
ausgeführt werden dürfen, können per Komma getrennt angegeben
werden:
ALL ALL=NOPASSWD: /sbin/reboot, /sbin/halt, /bin/sed, /tmp/update.sh