software:controller:vzlogger:installation_cpp-version
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
software:controller:vzlogger:installation_cpp-version [2019/01/06 12:56] – -sudo jau | software:controller:vzlogger:installation_cpp-version [2023/06/21 07:49] – justinotherguy | ||
---|---|---|---|
Zeile 6: | Zeile 6: | ||
Unser Repository: https:// | Unser Repository: https:// | ||
- | Derzeit | + | Derzeit |
- | Wechsle | + | |
+ | Dies macht man praktischerweise | ||
< | < | ||
cd ~ | cd ~ | ||
</ | </ | ||
+ | |||
+ | Die meisten Erfahrungen mit dem Bau des vzloggers bestehen mit Debian und verwandten Distributionen (Ubuntu, Raspbian). Die folgenden Anleitungen wurden im April 2022 mit Debian 11 " | ||
===== Systemvoraussetzungen zur Kompilierung des vzlogger ===== | ===== Systemvoraussetzungen zur Kompilierung des vzlogger ===== | ||
- | Für eine erfolgreiche Kompilierung des vzlogger werden, neben gcc (4.7 oder neuer) | + | Für eine erfolgreiche Kompilierung des vzlogger werden, neben gcc und glibc, auch diese Libraries benötigt: |
=== Tools === | === Tools === | ||
- | * git (package: git-core) | + | * git |
* cmake | * cmake | ||
* pkg-config | * pkg-config | ||
Zeile 24: | Zeile 27: | ||
=== Erforderliche Libraries === | === Erforderliche Libraries === | ||
- | * libjson | + | * libjson-c-dev |
- | * libcurl3 >= 7.19 | + | * libcurl4-openssl-dev |
- | * libgnutls-dev | + | * libgnutls28-dev |
* libgcrypt | * libgcrypt | ||
* libsasl2-dev | * libsasl2-dev | ||
* libuuid1 | * libuuid1 | ||
- | * libsml (for sml meters) | + | * libsml (für sml meters) |
* libmicrohttpd-dev >= 0.4.6 (for builtin " | * libmicrohttpd-dev >= 0.4.6 (for builtin " | ||
* libltdl >=0.8.0 (for OMS) | * libltdl >=0.8.0 (for OMS) | ||
* libleptonica-dev (for OCR) | * libleptonica-dev (for OCR) | ||
+ | * libmosquitto-dev (for MQTT) | ||
* libunistring-dev (wegen Problem mit Ubuntu 18.04) | * libunistring-dev (wegen Problem mit Ubuntu 18.04) | ||
=== Debian Pakete === | === Debian Pakete === | ||
- | Für Distributionen die auf Debian " | ||
- | (eventuell erstmal " | ||
- | < | ||
- | Für Debian | + | Für auf Debian |
- | < | + | |
+ | < | ||
+ | installiert werden. Eventuell erstmal < | ||
===== Build per Script ===== | ===== Build per Script ===== | ||
Zeile 53: | Zeile 56: | ||
</ | </ | ||
- | Das Script bietet auch die Möglichkeit nur einzelne Module zu übersetzen. Details dazu findet man als Kommentar im Script. | + | Das Script bietet auch die Möglichkeit, nur einzelne Module zu übersetzen. Details dazu findet man als Kommentar im Script. |
+ | |||
+ | Möchte man den vzlogger mit optionaler Funktionalität MQTT bauen lautet der Aufruf für das Script: | ||
+ | < | ||
+ | ./ | ||
+ | </ | ||
=== Hintergrunddienst === | === Hintergrunddienst === | ||
Zeile 59: | Zeile 67: | ||
=== Aktualisierung === | === Aktualisierung === | ||
- | Falls der vzlogger | + | |
+ | Ist in der Regel aber nicht nötig, aber die zugrundeliegende SML Bibliothek kann (vorher) für sich aktualisiert werden, indem: | ||
+ | < | ||
+ | cd vzlogger/ | ||
+ | git pull | ||
+ | cd ../.. | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | Zum Aktualisieren des vzlogger dient diese Prozedur: | ||
< | < | ||
sudo systemctl stop vzlogger | sudo systemctl stop vzlogger | ||
Zeile 68: | Zeile 85: | ||
</ | </ | ||
- | Die zugrundeliegenden SML Bibliothek kann (vorher) aktualisiert werden indem: | + | Mit optionaler Funktionalität MQTT lautet hier der Aufruf für das Script: |
< | < | ||
- | cd vzlogger/ | + | ./ |
- | git pull | + | |
- | cd ../.. | + | |
- | ./ | + | |
</ | </ | ||
===== Build von Hand ===== | ===== Build von Hand ===== | ||
+ | |||
Falls das Script nicht zu den Gegenheiten passt nachfolgend die einzelnen Schritte. | Falls das Script nicht zu den Gegenheiten passt nachfolgend die einzelnen Schritte. | ||
<note warning> | <note warning> | ||
- | |||
- | === Building libjson === | ||
- | Libjson sollte direkt aus den Quellen übersetzt werden. | ||
- | < | ||
- | git clone -b json-c-0.12 https:// | ||
- | cd json-c | ||
- | sh autogen.sh | ||
- | ./configure | ||
- | make | ||
- | sudo make install | ||
- | </ | ||
- | |||
- | Zurück zum Ausgangsverzeichnis: | ||
=== Building libsml === | === Building libsml === | ||
+ | Debian bietet zwar ein Paket libsml-dev, das basiert aber leider auf veraltetem, nicht mehr gepflegtem Code. | ||
< | < | ||
git clone https:// | git clone https:// | ||
Zeile 111: | Zeile 114: | ||
=== Building vzlogger === | === Building vzlogger === | ||
+ | < | ||
< | < | ||
git clone https:// | git clone https:// | ||
Zeile 117: | Zeile 120: | ||
mkdir build | mkdir build | ||
cd build | cd build | ||
- | cmake .. | + | cmake -DBUILD_TEST=off |
make | make | ||
sudo make install | sudo make install | ||
</ | </ | ||
- | Falls es Probleme mit libsml gibt statt nur " | + | Zurück zum Ausgangsverzeichnis: |
+ | |||
+ | == Bau als Debian-Paket == | ||
+ | |||
+ | Das vzlogger Repository enthält ebenfalls Code, um ein "sauber" | ||
< | < | ||
- | cmake .. -DSML_HOME=/path/to/libsml | + | git clone https:// |
+ | cd vzlogger | ||
+ | apt build-dep ./ | ||
+ | apt install devscripts | ||
+ | debuild | ||
</ | </ | ||
- | Zurück zum Ausgangsverzeichnis: | ||
=== Building OMS === | === Building OMS === | ||
Zeile 161: | Zeile 172: | ||
Systemd dient dazu Hintergrunddienste einzurichten und zu verwalten. | Systemd dient dazu Hintergrunddienste einzurichten und zu verwalten. | ||
- | Das Installationsscript fragt ob es ein " | + | Das Installationsscript fragt ob es ein " |
Falls du es selbst kopieren oder editieren willst findest du ein Beispiel unter: | Falls du es selbst kopieren oder editieren willst findest du ein Beispiel unter: | ||
Zeile 185: | Zeile 196: | ||
sudo systemctl enable vzlogger | sudo systemctl enable vzlogger | ||
</ | </ | ||
+ | |||
+ | |||
+ | ====== vzlogger als anderer Benutzer ausführen ====== | ||
+ | |||
+ | === Elevated privileges für vzlogger binary setzen === | ||
+ | |||
+ | Als User führt man folgenden Befehl aus, um ausreichend Rechte zum Ausführen des Programms zu erhalten: | ||
+ | < | ||
+ | sudo setcap ' | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | === Dienst-User anlegen === | ||
+ | |||
+ | Man kann für den Dienst einen separaten User (z.B. '' | ||
+ | < | ||
+ | sudo useradd -M vzlogger | ||
+ | sudo passwd vzlogger | ||
+ | </ | ||
+ | |||
+ | Auf einem Raspberry den neuen User diversen Gruppen hinzufügen. | ||
+ | < | ||
+ | sudo usermod -aG gpio vzlogger | ||
+ | sudo usermod -aG dialout vzlogger | ||
+ | sudo usermod -aG staff vzlogger | ||
+ | </ | ||
+ | |||
+ | Für das Logfile ein Unterverzeichnis mit passenden Schreibrechten anlegen. | ||
+ | < | ||
+ | sudo mkdir / | ||
+ | sudo chgrp staff / | ||
+ | sudo chmod g+w / | ||
+ | </ | ||
+ | |||
+ | === vzlogger.conf anpassen === | ||
+ | |||
+ | Der neue Ort fürs Logfile muss natürlich auch vzlogger bekannt gemacht werden. ''/ | ||
+ | < | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Systemd Startscript anpassen === | ||
+ | |||
+ | Nun muss nur noch im Systemd Startscript (siehe anderer Paragraph) der User, mit welchem vzlogger ausgeführt werden soll, hinzugefügt bzw. geändert werden. | ||
+ | |||
+ | Unter der Kategorie [Service] fügt man eine weitere Zeile hinzu. Für den User vzlogger lautet es zum Beispiel: | ||
+ | |||
+ | < | ||
+ | User=vzlogger | ||
+ | </ | ||
+ | |||
+ | Nun muss der Service nur neu gestartet werden und vzlogger läuft unter dem angegebenen Benutzer: | ||
+ | |||
+ | < | ||
+ | sudo systemctl daemon-reload | ||
+ | </ | ||
+ | |||
+ | === Verwendung === | ||
+ | |||
+ | Das Betreiben von vzlogger unter einem anderen Benutzer als root ist vor allem bei der Verwendung vom Protokol " | ||
software/controller/vzlogger/installation_cpp-version.txt · Zuletzt geändert: 2024/05/12 19:36 von jau