Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:controller:vzlogger:installation_cpp-version

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
software:controller:vzlogger:installation_cpp-version [2018/05/09 18:51] – PR355 unistring jausoftware:controller:vzlogger:installation_cpp-version [2024/02/04 11:25] (aktuell) – [Build von Hand] cmake Syntaxfehler jau
Zeile 6: Zeile 6:
 Unser Repository: https://github.com/volkszaehler/vzlogger\\ Unser Repository: https://github.com/volkszaehler/vzlogger\\
  
-Derzeit sind vzlogger und ein paar der Bibliotheken (Libraries) nur als Quellcode verfügbar. Diese müssen vor gebrauch kompiliert (übersetzt) werden. +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.  
-Wechsle in ein Verzeichnis in dem dein Nutzer Schreibrechte hat. Zum Beispiel dein Home-Verzeichnis:+ 
 +Dies macht man praktischerweise in einem Verzeichnisin dem dein "normaler" Nutzer Schreibrechte hat. Zum Beispiel dein Home-Verzeichnis:
  
 <code> <code>
 cd ~ cd ~
 </code> </code>
 +
 +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 "Bullseye" verifiziert; Informationen für ältere Versionen finden sich in der Historie dieser Seite.
  
 ===== Systemvoraussetzungen zur Kompilierung des vzlogger ===== ===== Systemvoraussetzungen zur Kompilierung des vzlogger =====
  
-Für eine erfolgreiche Kompilierung des vzlogger werden, neben gcc (4.7 oder neuer) und glibc, auch diese Libraries benötigt:+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 >= 0.11 (>= 0.9 before [[https://github.com/volkszaehler/vzlogger/pull/106]]) +  * 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 "local" webserver)   * libmicrohttpd-dev >= 0.4.6 (for builtin "local" webserver)
   * 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 "Jessie" basieren können die meisten dieser Abhängigkeiten folgendermaßen installiert werden: 
-(eventuell erstmal "apt-get update" als root ausführen) 
-<code>sudo apt-get install build-essential git-core cmake pkg-config subversion libcurl4-openssl-dev libgnutls28-dev libsasl2-dev uuid-dev libtool libssl-dev libgcrypt20-dev libmicrohttpd-dev libltdl-dev libjson-c-dev libleptonica-dev libunistring-dev dh-autoreconf</code> 
  
-Für Debian "Wheezy"+Für auf Debian basierende Distributionen können die meisten dieser Abhängigkeiten mit: 
-<code>sudo apt-get install build-essential git-core cmake pkg-config subversion libcurl3-dev libgnutls-dev libsasl2-dev uuid-dev libtool libmicrohttpd-dev libcurl4-openssl-dev libssl-dev libltdl-dev libleptonica-dev libunistring-dev dh-autoreconf</code>+ 
 +<code>sudo apt-get install build-essential git cmake pkg-config subversion libcurl4-openssl-dev libgnutls28-dev libsasl2-dev uuid-dev libtool libssl-dev libgcrypt20-dev libmicrohttpd-dev libltdl-dev libjson-c-dev libleptonica-dev libmosquitto-dev libunistring-dev dh-autoreconf</code> 
 +installiert werden. Eventuell erstmal <code>sudo apt-get update</code> ausführen.
  
 ===== Build per Script ===== ===== Build per Script =====
Zeile 53: Zeile 56:
 </code> </code>
  
-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öglichkeitnur 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: 
 +<code> 
 +./install.sh vzlogger libjson libsml mqtt 
 +</code>
  
 === Hintergrunddienst === === Hintergrunddienst ===
Zeile 59: Zeile 67:
  
 === Aktualisierung === === Aktualisierung ===
-Falls der vzlogger aktualisiert werden soll ist wie folgt vorzugehen:+ 
 +Ist in der Regel aber nicht nötig, aber die zugrundeliegende SML Bibliothek kann (vorher) für sich aktualisiert werden, indem: 
 +<code> 
 +cd vzlogger/libs/libsml 
 +git pull 
 +cd ../.. 
 +./install.sh libsml 
 +</code> 
 + 
 +Zum Aktualisieren des vzlogger dient diese Prozedur:
 <code> <code>
 sudo systemctl stop vzlogger sudo systemctl stop vzlogger
Zeile 68: Zeile 85:
 </code> </code>
  
-===== Build von Hand ===== +Mit optionaler Funktionalität MQTT lautet hier der Aufruf für das Script:
-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:controller:vzlogger:installation_cpp-version#build_per_script|Build per Script]] machen.</note> +
- +
-=== Building libjson === +
-Libjson sollte direkt aus den Quellen übersetzt werden.+
 <code> <code>
-git clone -b json-c-0.12 https://github.com/json-c/json-c +./install.sh mqtt vzlogger
-cd json-c +
-sh autogen.sh +
-./configure +
-make +
-sudo make install+
 </code> </code>
  
-Zurück zum Ausgangsverzeichnis: <code>cd ..</code>+===== 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:controller:vzlogger:installation_cpp-version#build_per_script|Build per Script]] machen.</note>
  
 === Building libsml === === Building libsml ===
 +Debian bietet zwar ein Paket libsml-dev, das basiert aber leider auf veraltetem, nicht mehr gepflegtem Code.
 <code> <code>
 git clone https://github.com/volkszaehler/libsml.git git clone https://github.com/volkszaehler/libsml.git
Zeile 103: Zeile 114:
  
 === Building vzlogger === === Building vzlogger ===
 +<note>Hier können bei Bedarf weitere Funktionen dazu kompiliert werden z.B. MQTT, dazu den cmake-Befehl anpassen:\\ ''cmake -DBUILD_TEST=off -DENABLE_MQTT=on ..''</note>
 <code> <code>
 git clone https://github.com/volkszaehler/vzlogger.git git clone https://github.com/volkszaehler/vzlogger.git
Zeile 109: Zeile 120:
 mkdir build mkdir build
 cd build cd build
-cmake ..+cmake -DBUILD_TEST=off ..
 make make
 sudo make install sudo make install
 </code> </code>
  
-Falls es Probleme mit libsml gibt statt nur "cmake .." versuchen:+Zurück zum Ausgangsverzeichnis: <code>cd ../..</code> 
 + 
 +== Bau als Debian-Paket == 
 + 
 +Das vzlogger Repository enthält ebenfalls Code, um ein "sauber" installier- und deinstallierbares Debian-Paket zu bauen.  
 <code> <code>
-cmake .. -DSML_HOME=/path/to/libsml+git clone https://github.com/volkszaehler/vzlogger.git 
 +cd vzlogger 
 +apt build-dep ./ 
 +apt install devscripts 
 +debuild
 </code> </code>
  
-Zurück zum Ausgangsverzeichnis: <code>cd ../..</code> 
  
 === Building OMS === === Building OMS ===
Zeile 127: Zeile 146:
 git clone https://github.com/rscada/libmbus.git git clone https://github.com/rscada/libmbus.git
 cd libmbus cd libmbus
-sudo ./build.sh+./build.sh
 sudo make install sudo make install
 </code> </code>
Zeile 139: Zeile 158:
 Falls der vzlogger aktualisiert werden soll ist wie folgt vorzugehen: Falls der vzlogger aktualisiert werden soll ist wie folgt vorzugehen:
 <code> <code>
-sudo systemctl stop vzlogger 
 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
 </code> </code>
Zeile 154: Zeile 172:
 Systemd dient dazu Hintergrunddienste einzurichten und zu verwalten. 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 (Debian "Jessie") solltest du mit yes (ja) bestätigen.+Das Installationsscript fragt ob es ein "systemd unit file" für dich installieren soll. Falls dein System systemd nutzt (ab Debian "Jessie") solltest du mit yes (ja) bestätigen.
  
 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 178: Zeile 196:
 sudo systemctl enable vzlogger sudo systemctl enable vzlogger
 </code> </code>
 +
 +
 +====== 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:
 +<code>
 +sudo setcap 'cap_sys_nice=eip' /usr/local/bin/vzlogger
 +</code>
 +
 +<note>Auf Raspberry können dennoch Zugriffsprobleme beim Konfigurieren der GPIO auftreten. Frühzeitiger export in ''/etc/rc.local'' umgeht das Problem.</note>
 +
 +=== Dienst-User anlegen ===
 +
 +Man kann für den Dienst einen separaten User (z.B. ''vzlogger'') ohne Homeverzeichnis anlegen und Passwort vergeben.
 +<code>
 +sudo useradd -M vzlogger
 +sudo passwd vzlogger
 +</code>
 +
 +Auf einem Raspberry den neuen User diversen Gruppen hinzufügen.
 +<code>
 +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.
 +<code>
 +sudo mkdir /var/log/vzlogger
 +sudo chgrp staff /var/log/vzlogger
 +sudo chmod g+w /var/log/vzlogger
 +</code> 
 +
 +=== vzlogger.conf anpassen ===
 +
 +Der neue Ort fürs Logfile muss natürlich auch vzlogger bekannt gemacht werden. ''/etc/vzlogger.conf'':
 +<code>
 +"log" : "/var/log/vzlogger/vzlogger.log",
 +</code>
 +
 +
 +=== 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:
 +
 +<code>
 +User=vzlogger
 +</code>
 +
 +Nun muss der Service nur neu gestartet werden und vzlogger läuft unter dem angegebenen Benutzer:
 +
 +<code>
 +sudo systemctl daemon-reload
 +</code>
 +
 +=== Verwendung ===
 +
 +Das Betreiben von vzlogger unter einem anderen Benutzer als root ist vor allem bei der Verwendung vom Protokol "exec" von Bedeutung. vzlogger muss nicht für die Verwendung neu kompiliert werden. Aufrufe von "exec" werden nicht von root sondern vom verwendeten User gemacht.
  
  
software/controller/vzlogger/installation_cpp-version.1525884680.txt.gz · Zuletzt geändert: 2018/05/09 18:51 von jau