User talk:Tijuca
Software
Osmosis Debian Paket
Da das Osmosis Paket in den Debian Repos nur in der Version 0.34 vorliegt kann man weder unter SID noch unter Squeeze das neue Format PBF benutzen. Um trotzdem eine aktuellere Version benutzen zu können muss man sich das passende Debian Paket selber bauen bis es ein Update in Debian gibt. Dazu gibt es entsprechende Werkzeuge die man gewohnt einfach per apt-get
installieren kann. Folgende Schritte sollten auf einen debian Squeeze bzw. auch SID funktionieren. Lenny habe ich nicht getestet.
Um die Develpakete zu installieren folgenden Befehl ausführen sofern diese Pakete nicht schon installiert sind.
sudo apt-get install dpkg-dev libdpkg-perl quilt devscripts quilt fakeroot libparse-debcontrol-perl
Da Osmosis an sich ein JAR File ist benötigt man natürlich noch ggfls. ein paar zusätzliche Builttools um später als letzten Schritt das Paket bauen zu können. Diese Build Depencies kann man per apt-get
automatisch auflösen lassen so das man nicht die einzelnen Pakete selber suchen muss.
sudo apt-get build-dep osmosis
Die folgenden Befehle nicht als root ausführen! Als nächstes benötigt man das "alte" Quellpaket (also die Version die im entsprechenden Repo aktuell ist. Zuvor legen wir uns ein Arbeitsverzeichniss an worin wir den Paketbau vollziehen wollen.
user@pc$ mkdir ~debbuild && cd debbuild user@pc~/debbuild$ apt-get source osmosis # als user arbeiten! Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut Statusinformationen werden eingelesen... Fertig HINWEIS: »osmosis«-Paketierung wird betreut im »Git«-Versionsverwaltungssystem auf: git://git.debian.org/pkg-grass/osmosis.git Es müssen 1.377 kB an Quellarchiven heruntergeladen werden. Hole:1 http://ftp.de.debian.org/debian/ squeeze/main osmosis 0.34+ds1-1 (dsc) [1.662 B] Hole:2 http://ftp.de.debian.org/debian/ squeeze/main osmosis 0.34+ds1-1 (tar) [1.367 kB] Hole:3 http://ftp.de.debian.org/debian/ squeeze/main osmosis 0.34+ds1-1 (diff) [8.273 B] Es wurden 1.377 kB in 6 s geholt (223 kB/s) gpgv: Schlüsselblockhilfsmittel`/home/user/.gnupg/trustedkeys.gpg': Fehler beim Öffnen der Datei gpgv: Unterschrift vom Do 01 Apr 2010 01:16:15 CEST mittels DSA-Schlüssel ID 1392B174 gpgv: Unterschrift kann nicht geprüft werden: Öffentlicher Schlüssel nicht gefunden dpkg-source: Warnung: Fehler beim Überprüfen der Signatur von ./osmosis_0.34+ds1-1.dsc <------- diese Warnung kann ignoriert werden! dpkg-source: Information: osmosis wird nach osmosis-0.34+ds1 extrahiert dpkg-source: Information: entpacken von osmosis_0.34+ds1.orig.tar.gz dpkg-source: Information: entpacken von osmosis_0.34+ds1-1.debian.tar.gz dpkg-source: Information: anwenden von 00-fix_build.patch dpkg-source: Information: anwenden von 01-fix_launcher.patch dpkg-source: Information: anwenden von 02-fix_plexus.patch dpkg-source: Information: anwenden von debian-changes-0.34+ds1-1
Als nächstes benötigt man die aktuellste Version von Osmosis von http://bretth.dev.openstreetmap.org/osmosis-build/ . Dies ist zu diesem Zeitpunkt die Version die Version 0.38. Also den Link von der Webseite kopieren und per wget in das selbe Verzeichniss holen.
user@pc~/debbuild$ wget http://bretth.dev.openstreetmap.org/osmosis-build/osmosis-0.38.tgz
Das Paket nicht selber entpacken! Das macht der folgende Befehl automatisch. Diese legt auch noch die Debian spezifischen Verzeichnisse mit an. Um starten zu können muss man in das Buildverzeichniss vom ürsprünglichen Debian Paket absteigen und dort den Befehl uupdate
ausführen.
user@pc~/debbuild$ cd osmosis-0.34+ds1/ user@pc~/debbuild/osmosis-0.34+ds1$ uupdate -v 0.38 ../osmosis-0.38.tgz New Release will be 0.38-1. Symlinking to pristine source from osmosis_0.38.orig.tar.gz... -- Untarring the new sourcecode archive ../osmosis-0.38.tgz Unpacking the debian/ directory from version 0.34+ds1-1 worked fine. Remember: Your current directory is the OLD sourcearchive! Do a "cd ../osmosis-0.38" to see the new package
Theoretisch könnte man jetzt schon das neue Paket bauen, allerdings gab es einige Veränderungen am Paket osmosis so das einige Patche im Verzeichniss debian/patches nicht mehr passen. Die Veränderungen sind divers, wir legen die Patche die wir benötigen einfach neu an. Zuvor muss man, wie von uupdate
schon geschrieben, zuvor in das Verzeichniss der neuen Version wechseln.
user@pc~/debbuild/osmosis-0.34+ds1$ cd ../osmosis-0.38 user@pc~/debbuild/osmosis-0.38$ rm -rf debian/patches/*
Nun sind noch zwei Patche anzulegen. Fangen wir mit dem für plexus.conf an. Um den Patch dem Buildprozess bekannt zu machen wird quilt benutzt.
user@pc~/debbuild/osmosis-0.38$ quilt new 00-fix_plexus.patch Der oberste Patch ist jetzt 00-fix_plexus.patch user@pc~/debbuild/osmosis-0.38$ quilt add config/plexus.conf Datei config/plexus.conf zu Patch 00-fix_plexus.patch hinzugefügt
Gepatcht wird nicht im klassischen Sinn, das patchen an sich nimmt uns quilt ab. Daher verändern wir nun einfach die Datei config/plexus.conf in der nötigen Art und Weise. Hier können wir es uns einfach machen und nehmen einfach die Datei aus den Source Paket der alten Debian Version 0.34 welche im Verzeichniss ../osmosis-0.34+ds1 liegt. Nach dem Kopieren muss man quilt noch mitteilen das man fertig ist mit dem Verändern (und optional einen Kommentar anlegen).
user@pc~/debbuild/osmosis-0.38$ cp ../osmosis-0.34+ds1/config/plexus.conf config/plexus.conf user@pc~/debbuild/osmosis-0.38$ quilt refresh Patch 00-fix_plexus.patch aktualisiert user@pc~/debbuild/osmosis-0.38$ quilt header -e # optional, nicht unbedingt nötig
Nun fehlt noch die Datei build.xml damit ant
später die Datei osmosis.jar auch bauen kann. Dies ist ein Fehler in der Upstream Version denn wir aber dadurch ausgleichen können in dem wir wiederum uns aus dem Verzeichniss ../osmosis-0.34+ds1 bedienen. Wir kopieren die Datei build.xml
von dort in das aktuelle Verzeichniss und müssen anschliesend noch kleine Veränderungen durchführen. Starten wir wieder mit der Generierung eines Patches.
user@pc~/debbuild/osmosis-0.38$ quilt new 02-fix_build.xml.patch Der oberste Patch ist jetzt 02-fix_build.xml.patch user@pc~/debbuild/osmosis-0.38$ quilt add build.xml Datei build.xml zu Patch 02-fix_build.xml.patch hinzugefügt user@pc~/debbuild/osmosis-0.38$ cp ../osmosis-0.34+ds1/build.xml . # der . am Schluss ist wichtig!
Jetzt passen wir die Version in der Datei build.xml an. Danach kann der Patch abgeschlossen werden. Zusätzlich muss von Hand noch ein Verzeichniss src/ angelegt werden damit ant
durchlaufen kann.
user@pc~/debbuild/osmosis-0.38$ sed -i -e "s/0.34/0.38/g" build.xml user@pc~/debbuild/osmosis-0.38$ quilt refresh Warning: trailing whitespace in lines 4,8,13,24,28,29,45,49,56,71,75,81,84,90,98,103,170,174,181,185,189,211,214 of build.xml
Patch debian-changes-0.38-1 aktualisiert
user@pc~/debbuild/osmosis-0.38$ quilt header -e # wieder optional, nicht unbedingt nötig user@pc~/debbuild/osmosis-0.38$ mkdir src
Als vorletzter Schritt muss nun noch das Changelog angepasst werden damit dpkg-buildpackage
seinen Dienst aufnehmen kann. Abschliesend kann man dann endlich dpkg-buildpackage
aufrufen.
user@pc~/debbuild/osmosis-0.38$ dch # es öffnet sich der eingestellte Editor, meistens vi, passenden Eintrag ggfls. erweitern user@pc~/debbuild/osmosis-0.38$ dpkg-buildpackage dpkg-buildpackage: exportieren von CFLAGS aus dpkg-buildflags (Quelle: vendor): -g -O2 dpkg-buildpackage: exportieren von CPPFLAGS aus dpkg-buildflags (Quelle: vendor): dpkg-buildpackage: exportieren von CXXFLAGS aus dpkg-buildflags (Quelle: vendor): -g -O2 dpkg-buildpackage: exportieren von FFLAGS aus dpkg-buildflags (Quelle: vendor): -g -O2 ... dpkg-deb: Baue Paket »osmosis« in »../osmosis_0.38-1_all.deb«. signfile osmosis_0.38-1.dsc ... dpkg-buildpackage: Alles hochzuladen (Originalquellen enthalten) dpkg-buildpackage: Warnung: .dsc- und .changes-Datei konnte nicht signiert werden <--- ist für den lokalen Build irrelevant und kann ignoriert werden
Nun findet man im übergeordneten Verzeichniss das frisch gebaute Osmosis Paket welches sich mit dpkg -i
installieren lässt.
user@pc~/debbuild/osmosis-0.38$ ls -la ../*.deb -rw-r--r-- 1 user user 52608 12. Dez 14:36 ../osmosis_0.38-1_all.deb
Fertig!
Probleme beim Bauen
Hmmm? Hab das jetzt mal so probiert. Paket wurde erstellt. Beim Test erscheint:
vofiwg@kiste1: ~/osm$ osmosis --read-xml file="270410.osm" --write-xml file=test.osm Exception in thread "main" java.lang.NoClassDefFoundError: org/codehaus/classworlds/Launcher Caused by: java.lang.ClassNotFoundException: org.codehaus.classworlds.Launcher at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:321) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:266) Could not find the main class: org.codehaus.classworlds.Launcher. Program will exit.
Hast Du eine Ahnung, was hier falsch läuft? Entschuldige bitte, dass ich hier in Deine Anleitung reinschreibe, aber wenn Du das schon auf der Disskussionsseite einstellst ... ;-) VoFiWG 19:52, 17 March 2011 (UTC)
Hiho,
uff das ist schon etwas länger her. Und das Java Zeugs mag ich nicht wirklich.
Hatte ich glaube auch den Fehler. Mit dem latest Paket lief es dann wohl durch.
Oder mit apt-cache mal suchen was da so in die Richtung geht.
apt-cache search classworlds libclassworlds-java-doc - Documentation for the Classworlds Java library libclassworlds-java - framework for container developers requiring manipulation of ClassLoaders <--- ggfls. fehlt das hier libplexus-classworlds-java-doc - API Documentation for plexus-classworlds libplexus-classworlds-java - Class loading utilities for the Plexus framework