software:controller:vzlogger:installation_cpp-version
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
software:controller:vzlogger:installation_cpp-version [2016/10/31 08:48] – udo1 | software:controller:vzlogger:installation_cpp-version [2024/02/04 11:25] (aktuell) – [Build von Hand] cmake Syntaxfehler jau | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ===== vzlogger Installation ===== | + | ====== vzlogger Installation |
- | ==== Repository ==== | + | This manual is also available in [[/software/controller/vzlogger/ |
- | Our repository: https://github.com/ | + | |
- | ==== Building from Source ==== | + | === Repository |
+ | Unser Repository: https:// | ||
- | === Prerequisites for compiling | + | Derzeit ist vzlogger |
- | Please note that a full configured vzlogger requires besides gcc (4.7 or higher) and glibc, | + | Dies macht man praktischerweise in einem Verzeichnis, |
- | == Tools == | + | |
- | * git (package: git-core) | + | < |
+ | 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 ===== | ||
+ | |||
+ | Für eine erfolgreiche Kompilierung des vzlogger werden, neben gcc und glibc, | ||
+ | |||
+ | === Tools === | ||
+ | * git | ||
* cmake | * cmake | ||
* pkg-config | * pkg-config | ||
- | * subversion (for tests using googlemock) | + | * subversion (für Tests mit googlemock) |
- | == required | + | === Erforderliche |
- | * 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) | ||
- | == debian packages | + | === Debian |
- | On Debian-Jessie based distributios, | + | |
- | (as root, consider running " | + | |
- | < | + | |
- | For Debian | + | Für auf Debian |
- | < | + | |
- | sudo apt-get install libjson-c-dev # see below</ | + | |
- | === Building | + | < |
+ | installiert werden. Eventuell erstmal < | ||
- | The best case is building libjson from source, which is simple too: | + | ===== Build per Script ===== |
+ | Vzlogger bietet ein Shellscript für Download, Übersetzung und Installation der Module die nur als Quellen verfügbar sind. | ||
< | < | ||
- | sudo apt-get install dh-autoreconf | + | git clone https:// |
- | sudo git clone -b json-c-0.12 | + | cd vzlogger |
- | cd json-c | + | ./install.sh |
- | sudo sh autogen.sh | + | |
- | sudo ./configure | + | |
- | sudo make | + | |
- | sudo make install | + | |
</ | </ | ||
+ | |||
+ | Das Script bietet auch die Möglichkeit, | ||
+ | |||
+ | Möchte man den vzlogger mit optionaler Funktionalität MQTT bauen lautet der Aufruf für das Script: | ||
+ | < | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | === Hintergrunddienst === | ||
+ | Nun sollte vzlogger vollends als Systemdienst eingerichtet werden. Details dazu [[software/ | ||
+ | |||
+ | === Aktualisierung === | ||
+ | |||
+ | 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 | ||
+ | cd vzlogger | ||
+ | git pull | ||
+ | ./ | ||
+ | sudo systemctl start vzlogger | ||
+ | </ | ||
+ | |||
+ | Mit optionaler Funktionalität MQTT lautet hier der Aufruf für das Script: | ||
+ | < | ||
+ | ./ | ||
+ | </ | ||
+ | |||
+ | ===== Build von Hand ===== | ||
+ | |||
+ | Falls das Script nicht zu den Gegenheiten passt nachfolgend die einzelnen Schritte. | ||
+ | <note warning> | ||
=== Building libsml === | === Building libsml === | ||
+ | Debian bietet zwar ein Paket libsml-dev, das basiert aber leider auf veraltetem, nicht mehr gepflegtem Code. | ||
< | < | ||
- | sudo git clone https:// | + | git clone https:// |
cd libsml | cd libsml | ||
sudo make | sudo make | ||
</ | </ | ||
- | Note that libsml does not include a 'make install' | + | Libsml bietet kein 'make install' |
- | You can manually install it into your system by copying the following files and directories | + | Man macht das manuell in dem man die folgenden Dateien und Verzeichnisse kopiert: |
< | < | ||
sudo cp sml/ | sudo cp sml/ | ||
Zeile 65: | Zeile 111: | ||
</ | </ | ||
- | === Building vzlogger === | + | Zurück zum Ausgangsverzeichnis: |
+ | === Building vzlogger === | ||
+ | < | ||
< | < | ||
git clone https:// | git clone https:// | ||
cd vzlogger | cd vzlogger | ||
- | cmake . | + | mkdir build |
+ | cd build | ||
+ | cmake -DBUILD_TEST=off .. | ||
make | make | ||
sudo make install | sudo make install | ||
</ | </ | ||
+ | |||
+ | Zurück zum Ausgangsverzeichnis: | ||
+ | |||
+ | == Bau als Debian-Paket == | ||
+ | |||
+ | Das vzlogger Repository enthält ebenfalls Code, um ein " | ||
+ | |||
+ | < | ||
+ | git clone https:// | ||
+ | cd vzlogger | ||
+ | apt build-dep ./ | ||
+ | apt install devscripts | ||
+ | debuild | ||
+ | </ | ||
+ | |||
=== Building OMS === | === Building OMS === | ||
- | OMS requires | + | OMS erfordert |
- | (installation is easy:) | + | |
< | < | ||
git clone https:// | git clone https:// | ||
cd libmbus | cd libmbus | ||
- | sudo ./build.sh | + | ./build.sh |
sudo make install | sudo make install | ||
</ | </ | ||
- | === Update vzlogger === | + | Zurück zum Ausgangsverzeichnis: |
+ | === Hintergrunddienst === | ||
+ | Nun sollte vzlogger als Systemdienst eingerichtet werden. Details dazu [[software/ | ||
+ | |||
+ | === vzlogger aktualisieren === | ||
+ | Falls der vzlogger aktualisiert werden soll ist wie folgt vorzugehen: | ||
< | < | ||
- | sudo systemctl stop vzlogger | ||
cd vzlogger | cd vzlogger | ||
git pull | git pull | ||
- | cmake . | + | cd build |
+ | cmake -DBUILD_TEST=off .. | ||
make | make | ||
+ | sudo systemctl stop vzlogger | ||
sudo make install | sudo make install | ||
- | cd ~ | ||
sudo systemctl start vzlogger | sudo systemctl start vzlogger | ||
</ | </ | ||
- | if you are having trouble building with libsml, instead of just "cmake .", | + | |
+ | ====== Systemd Startscript ====== | ||
+ | Systemd dient dazu Hintergrunddienste einzurichten und zu verwalten. | ||
+ | |||
+ | Das Installationsscript fragt ob es ein "systemd unit file" für dich installieren soll. Falls dein System systemd nutzt (ab Debian | ||
+ | |||
+ | Falls du es selbst kopieren oder editieren willst findest du ein Beispiel unter: | ||
+ | [[https:// | ||
+ | < | ||
+ | |||
+ | <note important> | ||
+ | Bitte stelle sicher das die Pfade zur Binary (vzlogger) und der Konfigurationsdatei (vzlogger.conf) korrekt sind. | ||
+ | </ | ||
+ | |||
+ | Den vzlogger kann man dann mit dem üblichen systemctl Kommando starten, stoppen und prüfen: | ||
< | < | ||
- | cmake . -DSML_HOME=/ | + | sudo systemctl start vzlogger |
+ | systemctl status vzlogger | ||
+ | sudo systemctl stop vzlogger | ||
</ | </ | ||
+ | < | ||
+ | |||
+ | Wenn der vzlogger zufriedenstellend läuft und bei jedem boot als Hintergrunddienst gestartet werden soll: | ||
- | a debian package can be generated using: | ||
< | < | ||
- | cpack -G DEB | + | sudo systemctl enable vzlogger |
</ | </ | ||
- | === Cross compiling === | ||
+ | ====== 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: | ||
< | < | ||
- | cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchainfile | + | sudo setcap ' |
</ | </ | ||
+ | < | ||
- | ==== systemd start script==== | + | === Dienst-User anlegen |
- | If your computer uses systemd | + | Man kann für den Dienst einen separaten User (z.B. '' |
+ | < | ||
+ | sudo useradd -M vzlogger | ||
+ | sudo passwd | ||
+ | </ | ||
- | Create a file vzlogger.service in / | + | 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 | ||
+ | </code> | ||
+ | Für das Logfile ein Unterverzeichnis mit passenden Schreibrechten anlegen. | ||
< | < | ||
- | [Unit] | + | sudo mkdir / |
- | Description=vzlogger | + | sudo chgrp staff /var/log/vzlogger |
- | After=syslog.target network.target | + | sudo chmod g+w / |
- | After=mysql.service ntp.service | + | </ |
- | [Service] | + | === vzlogger.conf |
- | ExecStart=/ | + | |
- | ExecReload=/bin/kill -HUP $MAINPID | + | |
- | StandardOutput=null | + | |
- | [Install] | + | Der neue Ort fürs Logfile muss natürlich auch vzlogger bekannt gemacht werden. ''/ |
- | WantedBy=multi-user.target | + | < |
+ | " | ||
</ | </ | ||
- | <note important> | ||
- | Please make sure that both paths to the binary (vzlogger) and its configuration file (vzlogger.conf) are correct. | ||
- | </ | ||
- | You can start, stop or verify vzloggers status using the common systemctl command: | + | === 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: | ||
< | < | ||
- | ~]# sudo systemctl start vzlogger | + | User=vzlogger |
- | ~]# systemctl status vzlogger | + | |
- | ~]# sudo systemctl stop vzlogger | + | |
</ | </ | ||
- | If you are satisfied and want to have vzlogger | + | Nun muss der Service nur neu gestartet werden und vzlogger |
< | < | ||
- | ~]# sudo systemctl | + | sudo systemctl |
</ | </ | ||
+ | |||
+ | === Verwendung === | ||
+ | |||
+ | Das Betreiben von vzlogger unter einem anderen Benutzer als root ist vor allem bei der Verwendung vom Protokol " | ||
+ | |||
+ | |||
+ | ====== Spezielle Hinweise ====== | ||
+ | |||
+ | === Debian Paket === | ||
+ | |||
+ | Um ein Debian Paket zu erzeugen: | ||
+ | < | ||
+ | cpack -G DEB | ||
+ | </ | ||
+ | |||
+ | === Cross Kompilierung=== | ||
+ | |||
+ | < | ||
+ | cmake -DCMAKE_TOOLCHAIN_FILE=/ | ||
+ | </ | ||
+ | |||
software/controller/vzlogger/installation_cpp-version.1477900137.txt.gz · Zuletzt geändert: 2016/10/31 08:48 von udo1