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 [2017/02/26 13:00] – [Prerequisites for compiling vzlogger] 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 ====== | ||
+ | |||
+ | This manual is also available in [[/ | ||
=== Repository === | === Repository === | ||
- | Our repository: https:// | + | Unser Repository: https:// |
+ | |||
+ | Derzeit ist vzlogger und (auf manchen Plattformen) ein paar der Bibliotheken (Libraries) nur als Quellcode verfügbar. Diese müssen vor gebrauch kompiliert (übersetzt) werden. | ||
+ | |||
+ | Dies macht man praktischerweise in einem Verzeichnis, | ||
- | Actually vzlogger and some of the libraries are only provided by sourcecode. They have to be compiled before use. | ||
- | Select a working directory your user has writing permissions. For example the home directory: | ||
< | < | ||
cd ~ | cd ~ | ||
</ | </ | ||
- | ===== Prerequisites for compiling | + | 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 ===== | ||
- | Please note that a full configured | + | Für eine erfolgreiche Kompilierung des vzlogger |
=== Tools === | === Tools === | ||
- | * git (package: git-core) | + | * 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 | + | === Debian |
- | On Debian-Jessie based distributios, | + | |
- | (as root, consider running " | + | |
- | < | + | |
- | For Debian | + | Für auf Debian |
- | < | + | |
- | ===== Build by script | + | < |
- | Vzlogger | + | installiert werden. Eventuell erstmal < |
+ | |||
+ | ===== Build per Script | ||
+ | Vzlogger | ||
< | < | ||
git clone https:// | git clone https:// | ||
Zeile 49: | Zeile 56: | ||
</ | </ | ||
- | The script supports also build of one single module. See the comments in the script for details. | + | Das Script bietet auch die Möglichkeit, |
- | === Update === | + | Möchte man den vzlogger mit optionaler Funktionalität MQTT bauen lautet der Aufruf für das Script: |
< | < | ||
- | sudo systemctl stop vzlogger | + | ./ |
+ | </ | ||
+ | |||
+ | === 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 | cd vzlogger | ||
git pull | git pull | ||
./ | ./ | ||
- | sudo systemctl start vzlogger | + | sudo systemctl start vzlogger |
</ | </ | ||
- | ===== Build by hand ===== | + | Mit optionaler Funktionalität MQTT lautet hier der Aufruf für das Script: |
- | In cases the script does not fit the conditions. | + | |
- | + | ||
- | === Building libjson === | + | |
- | + | ||
- | The best case is building libjson from source, which is simple too: | + | |
< | < | ||
- | sudo apt-get install dh-autoreconf | + | ./install.sh mqtt vzlogger |
- | git clone -b json-c-0.12 https://github.com/ | + | |
- | cd json-c | + | |
- | sh autogen.sh | + | |
- | ./ | + | |
- | make | + | |
- | sudo make install | + | |
</ | </ | ||
- | Go back to your starting directory: | + | ===== Build von Hand ===== |
+ | |||
+ | Falls das Script nicht zu den Gegenheiten passt nachfolgend die einzelnen Schritte. | ||
+ | <note warning>Nur für geübte User! Wer wenig Erfahrung hat sollte den [[software: | ||
=== 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 84: | Zeile 102: | ||
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 93: | Zeile 111: | ||
</ | </ | ||
- | Go back to your starting directory: < | + | Zurück zum Ausgangsverzeichnis: < |
=== Building vzlogger === | === Building vzlogger === | ||
+ | < | ||
< | < | ||
git clone https:// | git clone https:// | ||
Zeile 102: | Zeile 120: | ||
mkdir build | mkdir build | ||
cd build | cd build | ||
- | cmake .. | + | cmake -DBUILD_TEST=off |
make | make | ||
sudo make install | sudo make install | ||
</ | </ | ||
- | Go back to your starting directory: < | + | 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 | ||
</ | </ | ||
- | Go back to your starting directory: < | + | Zurück zum Ausgangsverzeichnis: < |
- | === Update vzlogger | + | === 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 #only works after creating the systemd start script, see below | ||
cd vzlogger | cd vzlogger | ||
git pull | git pull | ||
cd build | cd build | ||
- | cmake .. | + | 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.1488110448.txt.gz · Zuletzt geändert: 2017/02/26 13:00 von udo1