>>  Linux >>

QMapShack unter Linux Mint 19.* sowie Ubuntu Bionic mit Mate Desktop kompilieren

Stand: 12.04.2019

Da gibt es doch wieder was neues an GPS Programmen unter Linux. Wie ich erfahren habe arbeitet der Programmierer Oliver Eichler (kiozen) von QLGT an einem neuen Programm.
Das Programm nennt sich QMapShack und alle Infos dazu sind auf dieser Webseite zu finden.

19.08.2018 - So nun die NEUE Lösung für das kompilieren unter Linux Mint 18.
Anleitung nicht von mir aber funzt Supi https://www.mtb-touring.net/qms/qmapshack-linux-mint-18/
Achtung seit Juli 2018 geht das kompilieren mit den XENIAL Paketquellen nicht mehr. Da das Paket
"qtwebengine5-dev"
benötigt wird, das Paket gibts aber erst in artful oder bionic. Bei Debian Testing auch kein Problem dort ist das Paket auch in den Paketquellen vorhanden.

09.04.2019 -- Neuste Anleitung zu Mint 19.*

Voraussetzungen

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

Um das alles in den passenden Versionen zu bekommen reicht fast die normale Install, nur Routino benötigt noch etwas Handarbeit.

Getestet hab ich alles mit Linux Mint 19 64bit (deutsche Version von DeVIL-I386) mit Mate Desktop im VMware Player.

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

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

sudo apt-get install cmake cmake-curses-gui g++

Mercurial, Checkinstall und Subversion

sudo apt-get install mercurial checkinstall subversion

einige Kleinigkeiten

sudo apt-get install debhelper inkscape sqlite3

GDAL

sudo apt-get install gdal-bin libgdal-dev python-gdal libbz2-dev

QT 5 aus den Paketquellen

sudo apt-get install qt5-default libqt5opengl5-dev libqt5webkit5-dev qtbase5-dev qttools5-dev qttools5-dev-tools qtscript5-dev libqt5sql5-mysql qtwebengine5-dev

QUAZIP

sudo apt-get install libquazip5-headers libquazip5-1 libquazip5-dev

PROJ4

Proj4 mindestens in der Ver 5.0 wird benötigt, im Moment nur die 4.9 in den Paketquellen, deshalb selbst ein passendes Paket kompilieren.
Ich verwende hier mal Ver.6.0, installiert wieder mittels checkinstall damit es auch in der Paketverwaltung erscheint und es somit auch wieder entfernbar ist. (dpkg -r proj4-ver6)

cd ~/Downloads
wget http://download.osgeo.org/proj/proj-6.0.0.tar.gz
tar xfvz proj-6.0.0.tar.gz
cd proj-6.0.0
./configure
make
sudo checkinstall -D --pkgname=proj4-ver6 --arch amd64 --backup=no
cd

Damit sind die wichtigsten Vorbereitungen abgeschlossen und da das alles Pakete aus der Paketverwaltung sind kann man auch noch nichts verkehrt gemacht haben.
Ich selbst lasse nach diesen ganzen Install Zeugs hier mal das System neu starten.

Programminstall

So nun legen wir mal einen Arbeitsordner an.
Ich Installiere dann alles weitere in diesen Ordner, so findet man später auch schneller die Pfade.

mkdir QMapShack

Routino

So nun holen wir uns 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
# kompilieren
make
# installieren und *.deb Paket erstellen
sudo checkinstall -D --pkgname=routino --arch amd64 --backup=no
cd

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 und dann mittels make kompiliert.
Hinweis von einem User, dort lief ccmake einfach ins Leere er konnte es dann mittels ccmake ../serverdaten -G "Unix Makefiles" lösen.

cd QMapShack
# jetzt die Quelldaten holen
hg clone https://bitbucket.org/maproom/qmapshack serverdaten
# Ordner anlegen zum kompilieren
mkdir build_QMapShack
cd build_QMapShack
ccmake ../serverdaten
make
# installieren und *.deb Paket erstellen
sudo checkinstall -D --pkgname=qmapshack --arch amd64 --backup=no
cd

Abschluss

Leider ließ sich das Programm, im Terminal, nicht starten. Es kam eine Fehlermeldung das routino Daten fehlten. Nach einiger Suche im Netz stellte sich heraus das noch einige Routino Sachen kopiert werden müssen. Aber Vorsicht das ist alles als «root» zu machen und kann das System gefährden.

sudo cp /usr/local/lib/libroutino.so /usr/lib/
sudo cp /usr/local/lib/libroutino.so.0 /usr/lib/

Fertig, Have Fun

Update des Programms

So damit sind wir auch schon am Schluss, um das Programm aktuell zu halten müssen dann immer der aktuellen Quelldaten eingebunden werden dazu in den Ordner ~/QMapShack/serverdaten wechseln und folgenden Befehl ausführen.

# Update aus folgenden Ordner ~/QMapShack/serverdaten
cd ~/QMapShack/serverdaten
hg pull
hg update
# 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 --arch amd64 --backup=no
# alles einbinden, Funzt bei mir alles

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
hg 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*) hg update
# 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!"
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

Links