>>  Linux >>

QMapShack unter Linux Mint 20.* mit Mate Desktop kompilieren

Stand: 31.03.2021

So wieder einmal haben sich die Bedingungen geändert, dieses mal ist etwas mehr Handarbeit von Nöten.
Erst mal Danke an @kiozen (Programmierer) für das SUPER Programm und für seine Hilfsbereitschaft bei diversen Problemlösungen.
Zur Lösung des letzten Problems hat vor allem @anesthesia aus dem Naviboard Forum beigetragen.
Da jetzt noch mehr Pakete selbst kompiliert werden müssen unbedingt die Anleitung und die Reihenfolge der Abarbeitung beachten.
Auch die kleinen Punkte bei den Befehlen nicht vergessen.

So hab jetzt verschiedenes getestet, diese Anleitung geht nur auf einem NEUEN SYSTEM.
Falls auf dem Rechner schon QMS installiert ist dann lieber behalten und nicht dran rum spielen.

Oder man entfernt zuerst mal alle Pakete die man nun selbst kompilieren muss.

sudo apt purge gdal-bin libgdal-dev python3-gdal libproj-dev python3-dev libquazip5-1 libquazip5-dev

Voraussetzungen

Um das Programm kompilieren zu können.
Bedingungen sind jetzt:

Getestet hab ich alles mit Linux Mint 20.1 (deutsche Version von DeVIL-I386) mit Mate Desktop in der VirtualBox .

Nach einem System Update holen wir uns alle benötigten Abhängigkeiten.

Cmake, g++ (C++-Compiler)

sudo apt install cmake cmake-curses-gui cmake-qt-gui g++ build-essential

Git, Checkinstall und Subversion

sudo apt install git checkinstall subversion

einige Kleinigkeiten

sudo apt install debhelper inkscape libalglib-dev libc6-dev zlib1g-dev libbz2-dev libgraphics-magick-perl sqlite3 libsqlite3-dev libtiff5-dev libcurl4-gnutls-dev

QT 5

sudo apt install qt5-default qttools5-dev-tools qttools5-dev qttools5-private-dev qtwebengine5-dev libqt5sql5-mysql

OpenGL

sudo apt install freeglut3 freeglut3-dev

Damit sind die wichtigsten Pakete aus der Paketverwaltung installiert.

Die restlichen Pakete

Arbeitsordner anlegen.
Ich Installiere dann alles weitere in diesen Ordner, so findet man später auch schneller die Pfade.

mkdir QMapShack

make oder cmake kann man noch den Parameter -j2 oder höher mitgeben.
Note: The parameter j2 defines the number of simultaneously running jobs when building the code. You can increase this parameter to the value of the optimal compilation speed depending on your CPU (-j3, -j4, ...).

QUAZIP

Quazip meckert bei cmake . zwar aber die Install geht dann ohne Fehler. Die Install kann man auch mit ¨checkinstall¨ machen.

cd ~/QMapShack
wget https://github.com/stachenov/quazip/archive/refs/heads/master.zip
unzip master.zip
cd quazip-master
cmake -D CMAKE_INSTALL_PREFIX=/usr .
make -j4
sudo make install
cd

PROJ

Das muss nun manuell kompiliert werden. Anleitung dazu auf der Projektseite und dazu unbedingt den Abschritt cmake nutzen.

cd ~/QMapShack
wget https://download.osgeo.org/proj/proj-8.0.0.tar.gz
tar xfvz proj-8.0.0.tar.gz
cd proj-8.0.0
mkdir build
cd build
ccmake ..
# Steuerdatei jetzt mittels ¨c¨ aufrufen.
Nun mit der Pfeiltaste auf ¨CMAKE_INSTALL_PREFIX¨ gehen ¨Enter¨
den wert nun auf ¨/usr¨ setzen und wieder ¨Enter¨
jetzt mit ¨c¨ und ¨g¨ die Cmake Datei erstellen

cmake --build . -j4
sudo cmake --build . --target install
cd

GDAL

Achtung das dauert jetzt, bei einem Intel I7 4.Generation ca 1 Stunde, also immer mit der Ruhe. Einstellungen der Energieverwaltung beachten nicht das der PC in den Ruhezustand geht.

cd ~/QMapShack
wget https://github.com/OSGeo/gdal/releases/download/v3.2.2/gdal-3.2.2.tar.gz
tar xfvz gdal-3.2.2.tar.gz
cd gdal-3.2.2
./configure --prefix=/usr
make -j4
sudo checkinstall -D --pkgname=gdal --arch amd64 --backup=no
cd

Routino

So nun holen wir uns noch Routino und binden es in das System ein.
Aktuelles Routino wird vom Server geholt und kompiliert, dann mittels Checkinstall ins System eingebunden. Bei Fehlern hat man dann ein *.deb Paket und kann zur Not alles rückgängig machen.

cd QMapShack
svn co http://routino.org/svn/trunk routino
cd routino
# nun eine kleine Änderung in einer Datei damit die *.lib Dateien in den richtigen Ordner kommen
nano Makefile.conf
# hier in Zeile 48 den Pfad abändern von prefix=/usr/local auf prefix=/usr
# alles speichern und dann kompilieren

make -j4
# installieren und *.deb Paket erstellen
sudo checkinstall -D --pkgname=routino --arch amd64 --backup=no
cd

Programminstall

QMapShack

Nun muss noch QMS besorgt werden.
Dazu holen wir uns das Programm vom Server.
Mittels ccmake wird dann die Datei für das kompilieren gebaut, mit ¨c¨ und ¨g¨ wird die Steuerdatei erstellt, und dann mittels make das Programm kompiliert.

cd QMapShack
# jetzt die Quelldaten holen
git clone https://github.com/Maproom/qmapshack.git serverdaten
# Ordner anlegen zum kompilieren
mkdir build_QMapShack
cd build_QMapShack
ccmake ../serverdaten
# Steuerdatei jetzt mittels ¨c¨ und ¨c¨ und ¨g¨ erstellen
make -j4
# installieren und *.deb Paket erstellen
sudo checkinstall -D --pkgname=qmapshack --arch amd64 --backup=no
cd

Erster Start

Den ersten Start dann gleich mal im Terminal ausführen damit man eventuelle Fehler gleich sieht.

qmapshack

Bei mir startet das Programm nun ohne Fehlermeldung.

Möglich ist auchfolgende Fehlermeldung "libraries: libproj.so.22: cannot open", dazu dann im Terminal noch ein

export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY
qmapshack

machen. Beim Beenden des Programms laufen einige Speicherfehler im Terminal auf aber das ist alles OK so.

Update des Programms dann wie gehabt.

Fertig, Have Fun

So hier ein kleines Video vom QMS kompilieren - Video

Links

Update des Programms

So wer den Update Vorgang etwas automatisieren möchte kann sich ja ein Script bauen, könnte in etwa so ausschauen.

#!/bin/sh
# Script-Name: ./qms_update.sh
# variable
datum=$(date +"%Y-%m-%d")
# ***************************************************
# Update aus folgenden Ordner ~/QMapShack/serverdaten
cd ~/QMapShack/serverdaten
git pull
# jetzt Benutzereingabe ob exit oder weiter
echo "Wenn keine geänderten Daten gefunden wurden kann man nun das Update beenden"
echo "Update Beenden $(tput bold)$(tput setaf 1)Ja (j)$(tput sgr0) oder $(tput bold)$(tput setaf 4)Nein (n)$(tput sgr0) eingeben:"
# Eingabe auswerten
read answer
echo "$(tput bold)$(tput setaf 4)Ihre Antwort war:$(tput sgr0)$(tput bold)$(tput setaf 2) $answer $(tput sgr0)"
case $answer in
n*|N*) git checkout dev
# wenn neue Daten da dann in den Ordner cd build_QMapShack wechseln und mit
cd ~/QMapShack/build_QMapShack
make
# ein neues Paket bauen, ins System dann wieder mit
sudo checkinstall -D --pkgname=qmapshack --pkgversion=$datum --arch amd64 --backup=no
echo "$(tput bold)$(tput setaf 1)Update abgeschlossen$(tput sgr0)"
echo "$(tput bold)$(tput setaf 4)ENDE mit ENTER$(tput sgr0)"
read ENDE
exit 0;;
# ***************************************************
j*|J*|y*|Y*) echo "Update beendet!"
git checkout dev
echo "$(tput bold)$(tput setaf 4)ENDE mit ENTER$(tput sgr0)"
read ENDE
exit 0;;
*) echo "Falsche Eingabe, Update wird abgebrochen"
echo "Fehler mussen eventuell von Hand beseitigt werden";;
esac
echo "$(tput bold)$(tput setaf 4)ENDE mit ENTER$(tput sgr0)"
read ENDE
exit 0