Impressum | Admin

QMapShack unter Linux Mint 17.3 Mate kompilieren

Voraussetzungen

Info seit 05.03.2016 braucht QMS unbedingt QT5.4 oder höher.
Ich hab mal wieder aufgeschrieben wie ich das bei mir hin bekommen habe.
Achtung beim kopieren der Befehle muss mein Benutzernahme « user » durch Euren Benutzernamen ersetzt werden.

Da der Programmierer die Anforderungen an QmapShack noch einmal nach oben gesetzt hat ist nun etwas mehr Handarbeit nötig um das Programm kompilieren zu können.
Bedingungen sind jetzt:

Um das alles in den passenden Versionen zu bekommen hat es einige Zeit gedauert, einiges wird mittels PPA geholt anderes muss von Hand ins System eingebunden werden.
Also alles mit Vorsicht und Bedacht machen nicht das man sein Linux zerschießt.

Getestet hab ich alles mit Linux Mint 17.3 64bit mit Mate Desktop im VMware Player.

Als erstes 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

Nun holen wir uns mittels PPA das benötigte Cmake, wer möchte kann es ja dann später wieder entfernen.
Und dann gleich ein Update des Systems machen.

sudo add-apt-repository ppa:george-edison55/cmake-3.x
sudo apt-get update

Nach dem 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

C-Compiler, Make und andere benötigte Abhängigkeiten

sudo apt-get install gcc make libc6-dev libz-dev libbz2-dev libgraphics-magick-perl

OpenGL

sudo apt-get install freeglut3 freeglut3-dev

GDAL & Proj4

sudo apt-get install gdal-bin libgdal-dev libgdal1h python-gdal libproj-dev

QT 5.4 oder größer

Nun geht es mit dem schwierigen Teil los, Oliver hat aus Programmiertechnischen Gründen QT nach oben gesetzt. Deshalb ist unter Linux Mint 17.3 Handarbeit angesagt. Ich hoffe unter Mint 18 gibt es dann die Paketquellen.

Ich hab das ganze jetzt mit einem manuellen QT5.5.1 ans laufen bekommen. Dazu holen wir uns erst mal die QT Datei und installieren diese in das Home Verzeichnis, hier die 64-bit Version aufgelistet.

wget -c -P ~/Downloads http://download.qt.io/official_releases/qt/5.5/5.5.1/qt-opensource-linux-x64-5.5.1.run
cd ~/Downloads
chmod +x qt-opensource-linux-x64-5.5.1.run
./qt-opensource-linux-x64-5.5.1.run
cd

Damit sind die wichtigsten Vorbereitungen abgeschlossen und ich selbst lasse hier mal das System neu starten.

Programminstall

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 --pkgversion=3.0 --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.
Dabei müssen die Pfade für Qt5 manuell bei ccmake eingetragen werden, siehe unten unter Bilder.
In meinen Falle lautet der Pfad « /home/user/Qt5.5.1/5.5/gcc_64/lib/cmake/ » dieser Pfad muss für die Ordner gesetzt werden.

cd QMapShack
# jetzt die Quelldaten holen
hg clone https://bitbucket.org/maproom/qmapshack serverdaten
# Ordner anlegen zum kompielieren
mkdir build_QMapShack
cd build_QMapShack
ccmake ../serverdaten
make
# installieren und *.deb Paket erstellen
sudo checkinstall -D --pkgname=qmapshack --pkgversion=1.3.1 --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/

Nun tauchte ein neuer Fehler auf das die QT5 Lib's nicht da sind, nach einiger suche hab ich dann noch einen Tipp gefunden das die Lib's für die aktuelle Sitzung Temporär übergeben werden müssen. Dazu muss man im Terminal folgendes eingeben.

export LD_LIBRARY_PATH=/home/user/Qt5.5.1/5.5/gcc_64/lib/:$LD_LIBRARY_PATH
# jetzt kann man das Programm starten
qmapshack

Starter Script

Da das eingeben der letzten Befehle zum starten von QMapShack immer recht mühsam sind erstellt man sich besser ein kleines Script und legt es auf einen Starter.

#!/bin/sh
# Script-Name qmsstart.sh
# startet QMapShack unter QT5.5
export LD_LIBRARY_PATH=/home/user/Qt5.5.1/5.5/gcc_64/lib/:$LD_LIBRARY_PATH
#
qmapshack

Bilder

Start InstallerAlles leer lassen und weiterweiterNormalerweise wird hier das aktuelle Home Verzeichnis angezeigt wenn nicht dann eingeben
alles so belassen wie eingestelltLizenz akzeptierenweiterInstall
FertigStart ccmakemit [c] weiter
hier mit [e] weiterSeite 1 da ist alles OKhier bei den Qt5 Pfaden muss man Hand anlegen alle Pfade mit NOTFOUND anpassenmittels ENTER kann man die Pfade editieren es muss der aktuelle Pfad geschrieben werden
schaut dann so aus wenn alles fertig mit [c] weiter bis [g] erscheintwenn [g] erscheint dann mittels [g] weitererster Fehler kann mit den copy der routino Daten behoben werdenjetzt der Qt5 Fehler
Lib's fuer die aktuelle Sitzung Temporaer uebergebenStartFertig

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 --pkgversion=1.1.0 --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