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 [2017/02/13 11:19] – [Building from Source] udo1software: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/installation_en|english]].
-Our repository: https://github.com/volkszaehler/vzlogger\\+
  
-==== Building from Source ====+=== Repository === 
 +Unser Repository: https://github.com/volkszaehler/vzlogger\\
  
-=== Prerequisites for compiling vzlogger ===+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. 
  
-Please note that a full configured vzlogger requires besides gcc (4.7 or higherand glibc, these libraries to compile successfully+Dies macht man praktischerweise in einem Verzeichnis, in dem dein "normaler" Nutzer Schreibrechte hatZum Beispiel dein Home-Verzeichnis: 
-== Tools == + 
-  * git (package: git-core)+<code> 
 +cd ~ 
 +</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 ===== 
 + 
 +Für eine erfolgreiche Kompilierung des vzlogger werden, neben gcc und glibc, auch diese Libraries benötigt
 + 
 +=== Tools === 
 +  * git
   * cmake   * cmake
   * pkg-config   * pkg-config
-  * subversion (for tests using googlemock)+  * subversion (für Tests mit googlemock)
    
-== required 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)
  
  
-== debian packages =+=== Debian Pakete ===
-On Debian-Jessie based distributios, most of these dependencies can easily be installed with: +
-(as root, consider running "apt-get update" first) +
-<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</code>+
  
-For 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 +
-sudo apt-get install libjson-c-dev # if Unable to locate package libjson-c-dev see below</code>+
  
-=== Building libjson ===+<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.
  
-The best case is building libjson from sourcewhich 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.
 <code> <code>
-sudo apt-get install dh-autoreconf +git clone https://github.com/volkszaehler/vzlogger.git 
-sudo git clone -b json-c-0.12 https://github.com/json-c/json-c +cd vzlogger 
-cd json-c +./install.sh
-sudo sh autogen.sh +
-sudo ./configure +
-sudo make +
-sudo make install+
 </code> </code>
  
-Go back to your starting directory: <code>cd ..</code>+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: 
 +<code> 
 +./install.sh vzlogger libjson libsml mqtt 
 +</code> 
 + 
 +=== Hintergrunddienst === 
 +Nun sollte vzlogger vollends als Systemdienst eingerichtet werden. Details dazu [[software/controller/vzlogger/installation_cpp-version#systemd_startscript|weiter unten]]. 
 + 
 +=== Aktualisierung === 
 + 
 +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> 
 +sudo systemctl stop vzlogger 
 +cd vzlogger 
 +git pull 
 +./install.sh vzlogger 
 +sudo systemctl start vzlogger 
 +</code> 
 + 
 +Mit optionaler Funktionalität MQTT lautet hier der Aufruf für das Script: 
 +<code> 
 +./install.sh mqtt vzlogger 
 +</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>
-sudo git clone https://github.com/volkszaehler/libsml.git+git clone https://github.com/volkszaehler/libsml.git
 cd libsml cd libsml
 sudo make sudo make
 </code> </code>
-Note that libsml does not include a 'make install' target.+Libsml bietet kein 'make install' Vorgabe.
  
-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:
 <code> <code>
 sudo cp sml/lib/libsml.* /usr/lib/ sudo cp sml/lib/libsml.* /usr/lib/
Zeile 67: Zeile 111:
 </code> </code>
  
-Go back to your starting directory: <code>cd ..</code>+Zurück zum Ausgangsverzeichnis: <code>cd ..</code>
  
 === 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
 cd vzlogger cd vzlogger
-cmake .+mkdir build 
 +cd build 
 +cmake -DBUILD_TEST=off ..
 make make
 sudo make install sudo make install
 </code> </code>
  
-Go back to your starting directory: <code>cd ..</code>+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> 
 +git clone https://github.com/volkszaehler/vzlogger.git 
 +cd vzlogger 
 +apt build-dep ./ 
 +apt install devscripts 
 +debuild 
 +</code> 
  
 === Building OMS === === Building OMS ===
  
-OMS requires openssl and libmbus >=0.8.0 from e.g. https://github.com/rscada/libmbus.git +OMS erfordert openssl und libmbus >=0.8.0 z.Bvon https://github.com/rscada/libmbus.git
-(installation is easy:)+
 <code> <code>
 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>
  
-Go back to your starting directory: <code>cd ..</code>+Zurück zum Ausgangsverzeichnis: <code>cd ..</code>
  
-=== Update vzlogger ===+=== Hintergrunddienst === 
 +Nun sollte vzlogger als Systemdienst eingerichtet werden. Details dazu [[software/controller/vzlogger/installation_cpp-version#systemd_startscript|weiter unten]].
  
 +=== vzlogger aktualisieren ===
 +Falls der vzlogger aktualisiert werden soll ist wie folgt vorzugehen:
 <code> <code>
-sudo systemctl stop vzlogger #only works after creating the systemd start script, see below 
 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 #only works after creating the systemd start script, see below+
 </code> </code>
  
-if you are having trouble building with libsml, instead of just "cmake .", use:+ 
 +====== Systemd Startscript ====== 
 +Systemd dient dazu Hintergrunddienste einzurichten und zu verwalten. 
 + 
 +Das Installationsscript fragt ob es ein "systemd unit file" für dich installieren sollFalls 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: 
 +[[https://github.com/volkszaehler/vzlogger/blob/master/etc/vzlogger.service|./etc/vzlogger.service]] 
 +<code>sudo cp ./etc/vzlogger.service /etc/systemd/system/vzlogger.service</code> 
 + 
 +<note important> 
 +Bitte stelle sicher das die Pfade zur Binary (vzlogger) und der Konfigurationsdatei (vzlogger.conf) korrekt sind. 
 +</note> 
 + 
 +Den vzlogger kann man dann mit dem üblichen systemctl Kommando startenstoppen und prüfen: 
 <code> <code>
-cmake . -DSML_HOME=/path/to/libsml+sudo systemctl start vzlogger 
 +systemctl status vzlogger 
 +sudo systemctl stop vzlogger
 </code> </code>
 +<note>Eine lauffähige Konfiguration ist dafür zwingend! Ansonsten wird vzlogger beendet und systemd meldet Fehler.</note>
 +
 +Wenn der vzlogger zufriedenstellend läuft und bei jedem boot als Hintergrunddienst gestartet werden soll:
  
-a debian package can be generated using: 
 <code> <code>
-cpack -G DEB+sudo systemctl enable vzlogger
 </code> </code>
  
-=== 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:
 <code> <code>
-cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchainfile /path/to/vzlogger_sources+sudo setcap 'cap_sys_nice=eip' /usr/local/bin/vzlogger
 </code> </code>
  
 +<note>Auf Raspberry können dennoch Zugriffsprobleme beim Konfigurieren der GPIO auftreten. Frühzeitiger export in ''/etc/rc.local'' umgeht das Problem.</note>
  
-==== systemd start script====+=== Dienst-User anlegen ===
  
-If your computer uses systemd (Debian-Jessiethen follow these steps to add vzlogger as a new service:+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>
  
-Create a file vzlogger.service in /etc/systemd/systemand fill it with these lines+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> <code>
-[Unit] +sudo mkdir /var/log/vzlogger 
-Description=vzlogger +sudo chgrp staff /var/log/vzlogger 
-After=syslog.target network.target +sudo chmod g+w /var/log/vzlogger 
-After=mysql.service ntp.service+</code> 
  
-[Service] +=== vzlogger.conf anpassen ===
-ExecStart=/usr/local/bin/vzlogger -c /etc/vzlogger.conf +
-ExecReload=/bin/kill -HUP $MAINPID +
-StandardOutput=null+
  
-[Install] +Der neue Ort fürs Logfile muss natürlich auch vzlogger bekannt gemacht werden. ''/etc/vzlogger.conf'': 
-WantedBy=multi-user.target+<code> 
 +"log" : "/var/log/vzlogger/vzlogger.log",
 </code> </code>
  
-<note important> 
-Please make sure that both paths to the binary (vzlogger) and its configuration file (vzlogger.conf) are correct. 
-</note> 
  
-You can startstop or verify vzloggers status using the common systemctl command:+=== Systemd Startscript anpassen === 
 + 
 +Nun muss nur noch im Systemd Startscript (siehe anderer Paragraph) der Usermit 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> <code>
-~]# sudo systemctl start vzlogger +User=vzlogger
-~]# systemctl status vzlogger +
-~]# sudo systemctl stop vzlogger+
 </code> </code>
-<note>You need a working configuration at this point! Else vzlogger will be closed and systemd generates failures.</note> 
  
-If you are satisfied and want to have vzlogger permanently startet as a service everytime your machine boots, just enable it:+Nun muss der Service nur neu gestartet werden und vzlogger läuft unter dem angegebenen Benutzer:
  
 <code> <code>
-~]# sudo systemctl enable vzlogger+sudo systemctl daemon-reload
 </code> </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.
 +
 +
 +====== Spezielle Hinweise ======
 +
 +=== Debian Paket ===
 +
 +Um ein Debian Paket zu erzeugen:
 +<code>
 +cpack -G DEB
 +</code>
 +
 +=== Cross Kompilierung===
 +
 +<code>
 +cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/toolchainfile /path/to/vzlogger_sources
 +</code>
 +
  
software/controller/vzlogger/installation_cpp-version.1486981144.txt.gz · Zuletzt geändert: 2017/02/13 11:19 von udo1