QMapShack unter Linux Mint 20.* mit Mate Desktop kompilieren
Stand: 28.06.2024
An diesem Artikel wird nicht mehr weiter gearbeitet.
Grund ist einfach ein Umstieg auf Arch Linux, ich mag einfach das Rolling Release Prinzip. Und mit ein wenig Vorarbeit ist auch eine Arch Install recht schnell erledigt.
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:
- Cmake
- Git
- Qt5.9.5
- Routino
- GDAL
- PROJ4 Ver. 7.2.1 min
- OpenGL
- g++
- quazip
- Mercurial
- Subversion
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
- Naviboard Forum (deutsch)
- in der offiziellen WIKI zu QMS gibt es jetzt auch eine Anleitung zum kompilieren
- hier noch ein Link zu einer weiteren QMS Webseite
- hab durch mein Analyse Programm noch eine Seite gefunden.
- hab noch eine Seite gefunden wo alle aktuellen *.deb Pakete für QMS aufgelistet sind.
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