DeltaLima ‘s Blog – www.DeltaLima.org

Blog von Marcus H. alias DeltaLima

Crashkurs: Backporting – Quick and Dirty / Wine und Iceweasel (Firefox)

Posted by DeltaLima on September 20th, 2010

Immer das aktuellste haben zu wollen ist nicht immer unbedingt vorteilhaft, jedoch kommt man manchmal einfach nicht drum herum oder will es trotz aller Schwierigkeiten unbedingt haben.

So ging es mir bei Wine (geht mir ständig bei wine so) und bei Iceweasel.

Bei Wine gibt es die offiziellen Repos, wo man Binärpakete für Debianbasierende Distributionen oder Debian selbst herunterladen kann. Diese haben den Vorteil, dass man sich so ziemlich sicher sein kann, dass es funktioniert, haben jedoch auch den Nachteil, dass die Pakete oft sehr alt sind und selten geupdated werden (zumindest die speziell für Debian angefertigten).

Oft wird hier also einfach mal ein Paket aus dem Ubuntu Pool geklaut und installiert. Das geht in 80% der Fälle gut, in den restlichen 20% fehlen oft Abhängigkeiten, bzw die Versionsunterschiede machen einen Strich durch die Rechnung. Da gibt es nur noch zwei Alternativen: a) auf der älteren, bereits vorhandenen Version bleiben oder b) warten, warten, warten …

Aber es gibt noch eine Variante c) Selber machen!

Das ist zwar die Variante mit den meisten Hinder- und Ärgernissen, jedoch die direkteste und aktuellste. Und aktuell ist es zum Glück auch nicht so schwer das selbst zu bewerkstelligen.

Was braucht man dafür:

Nun, eigentlich nur einen PC, wo die (für diesen Crashkurs) Debian-basierende Distribution der Wahl installiert ist und das allerwichtigste: Zeit und Nerven! Es wird eventuell vorkommen, dass eine Kleinigkeit klemmt und man nicht auf Anhieb drauf kommt, wo und warum.

Man kann Debian Pakete auf dem normalen System bauen. Was ich aber nicht empfehle, da die ganzen Dev-Pakete mit auf dem normalen System liegen und nur unnötig zumüllen. Zumal kann es hier auch zu Problemen kommen.

Empfehlenswert ist hier sich eine chroot-Umgebung mittels debootstrap einzurichten. ‘debootstrap’ ist ein eigenes Paket in Debian (und Debian-basierenden Distros) und muss nachinstalliert werden mittels

apt-get install debootstrap

Nun muss man als Benutzer “root” sich ein neues Verzeichnis anlegen, wo denn die neue Umgebung einziehen darf. Ich setze hier voraus, dass jeder weiß, wie man mit mkdir ein Verzeichnis erstellt.

Jetzt müssen wir ‘debootstrap’ noch sagen wohin das neue System soll, was denn für ein System installiert werden soll und optional von woher er sich die Pakete nehmen soll.

root@k10n78d:~# debootstrap

I: usage: [OPTION]… <suite> <target> [<mirror> [<script>]]

Als Beispiel hier einfach mal folgendes

debootstrap build_env squeeze

‘build_env’ ist in meinem Beispiel das Zielverzeichnis, wo die neue Umgebung installiert wird. Der ganze Vorgang dauert eine Weile, je nach Internetanbindung und Rechnergeschwindigkeit. Wenn das ganze abgearbeitet ist, kommt ihr wieder auf eure normale Shell. In die neue Umgebung wechseln wir mittels ‘chroot’

root@k10n78d:~# chroot –help

Usage: chroot [OPTION] NEWROOT [COMMAND [ARG]…]

In meinem Beispiel müsste das dann so aussehen:

chroot build_env/ /bin/bash

‘/bin/bash’ ruft dann in der neuen chroot-Umgebung die Bash als Shell auf. Das ist notwendig, sonst könnten wir nicht flexibel in der neuen Umgebung agieren. Theoretisch könnte man auch einzelne Befehle/Programme ausführen, was wohl für unser Vorhaben nicht viel Sinn macht.

Nun, da wir in der neuen chroot-Umgebung sind, welche auf das geringste beschränkt ist, müssen wir ein paar Dinge nachbessern. Ich z.B. installiere mir zunächst ‘vim’ nach, da ich den normalen VI nicht so wirklich mag. Außerdem sollte man das Paket ‘locales’ installieren und anschließend mit ‘dpkg-reconfigure locales’ konfigurieren. Hier kann mann dann “DE_de UTF8″ auswählen. Macht man das nicht, so wird man wohl von Perl ein paar Fehlermeldungen an den Kopf geworfen bekommen, da was mit locales nicht stimmt.

Bestimmt werdet ihr mitbekommen haben, dass die Downloads nicht die schnellsten sind. Das liegt daran, dass standardmäßig der Debian Mirror aus den USA genutzt wird. Hier braucht man nur die Datei ‘/etc/apt/sources.list’ anpassen. Am besten noch die Sektionen “main contrib non-free” hinzufügen, damit man das gesamte Repo zur Verfügung hat. Am wichtigsten jetzt sind noch die Source-Quellen vom Debian Mirror. Hier einfach die obere Zeile kopieren und vorn “deb-src” hinzufügen.

deb http://ftp.de.debian.org/debian squeeze main contrib non-free

deb-src http://ftp.de.debian.org/debian experimental main contrib non-free

So sollte es / könnte es aussehen. Ich habe hier als Quelle für die Sourcen ‘experimental’ genommen, da ich hier gern Iceweasel raus entnehmen will und auf squeeze (testing aktuell) backporten möchte. (Aus ‘experimental’ sollte man möglichst sonst keine Pakete backporten!!)

Wir müssen noch das System auf den aktuellsten Stand bringen, was den apt-cache angeht. Das geht mit ‘apt-get update’ – kurz warten fertig.

Der nächste Schritt ist, dass wir Abhängigkeiten zum übersetzen der Sourcen installieren müssen. Hier könnte man das manuell machen oder den bequemen Weg über apt-get build-dep nachreichen. Da wir ‘experimental’ gerade gesetzt haben als Quelle für die Sourcen kann es passieren, dass nun Abhängigkeiten heruntergeladen werden sollen, die in dem aktuellen Zweig “squeeze” noch nicht gibt. Hier im Zweifelsfall nochmal kurz die Zeile mit “deb-src” umstellen auf “squeeze”.

Bei mir ist bei Iceweasel alles glatt gelaufen

apt-get build-dep iceweasel

Jetzt sind die Abhängigkeiten installiert. Solltet ihr sources.list umgestellt haben, dann müsst ihr jetzt wieder auf den gewünschten Zweig umstellen und mit ‘apt-get update’ aktualisieren. Um an den Quellcode ranzukommen müssen wir

apt-get source iceweasel

ausführen. Zuvor würde ich empfehlen einen extra Ordner anzulegen, indem die Dateien heruntergeladen und entpackt werden können. Wenn die Sourcen heruntergeladen und entpackt worden sind, wechseln wir in den Ordner, wo nun die Sourcedateien liegen. Bei Iceweasel 3.6.10 wäre das ‘iceweasel-3.6.10′.

In diesen Ordner haben wir einen Unterordner “debian”. Hier kann man, wenn man möchte die Dateien ‘changelog’, ‘control’ und ‘rules’ anpassen. Ich habe alles so belassen. Quick and Dirty eben ;)

Anschließend einfach im Verzeichnis  ’iceweasel-3.6.10′ dpkg-buildpacke ausführen und zurücklehnen. Das dauert jetzt eine Weile und eure Maschine wird wohl ordentlich zu tun haben.

Wine aus den Quellen übersetzen

Ich knüpfe gleich an. Iceweasel ist installiert, die Pakete erstellt und können nun auf dem eigentlichen System mittels ‘dpkg -i’ installiert werden.

Jetzt soll noch die aktuelle Wine-Version aus den normalen Sourcen übersetzt und installiert werden. Nichts einfacher als das!

Hierzu ersteinmal die aktuelle Version, in meinem Fall 1.3.3, herunterladen

wget http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.3.3.tar.bz2

und mit

‘bunzip wine-1.3.3.tar.bz2 && tar xvf wine-1.3.3.tar’

entpacken.

Wir wechseln in den angelegten Ordner ‘wine-1.3.3′, wo sich die Dateien der Sourcen befinden, welche wir eben entpackt haben.

Wir brauchen die Abhängigkeiten zum übersetzen von Wine. Hier kann man sich wieder ‘apt-get build-del wine’ bedienen. (Vorher am besten sources.list auf “squeeze” wieder umstellen)

Sind die Abhängigkeiten geladen, könnten wir jetzt zwei Wege einschlagen:

a) Wir wollen nur Wine übersetzen und installieren

b) Wir wollen ein Paket bauen

Ich gehe ersteinmal auf a) ein. Wollen wir nur Wine übersetzen und installieren reicht folgende Zeile

./configure && make

Anschließend von dem normalen System aus in das Verzeichnis der chroot-Umgebung wechseln, wo die Wine-Quellen liegen und ein ‘make install’ ausführen und schon sollte sich Wine installieren. Das ist etwas unsauber, geht aber am schnellsten.

Variante b) wäre, ein Paket zu bauen. Dazu benötigen wir das Programm ‘dh_make’ welches wir mittels ‘apt-get install dh-make’ bekommen. ‘dh_make’ “debianisiert’ die Quellen, erstellt uns also den order ‘debian/’ und nimmt ein paar automatisierte Anpassungen vor.

dh_make –native

Hier ‘single binary’ auswählen. Das bewirkt, dass uns alles in ein Paket verpackt wird. Ist geschmackssache und hat in bestimmten Situationen seinen Vorteil – uns soll jedoch ein einzelnes Paket ausreichen. Mittels der Option ‘–native’ erstellt ‘dh_make’ uns “orig”-Dateien, also die Original Dateien. Diese könnten und sollten wir auch mitliefen, wöllten wir das Paket veröffentlichen, jedoch haben wir ja keine Änderungen am Quellcode vorgenommen.

Anschließend noch ein ‘dpkg-buildpacke’ und wir können uns ersteinmal zurücklehnen. Normalerweise sollte der Prozess gut verlaufen, da alle Abhängigkeiten durch ‘apt-get build-dep’ ordnungsgemäß heruntergeladen und installiert worden sind. Am ende bekommen wir dann ein .deb-Paket, welches wir wieder auf dem normalen System installieren können.

Soviel zu der Kurz-Anleitung zum Erstellen von Debian-Backports bzw. Paketen – ganz Quick and Dirty.

Soviel dazu ;)

~#

PS: http://backports.deltalima.org – Hier sind meine “Resultate”, welche ihr euch gern herunterladen und anwenden könnt! Viel Spaß damit!

Update:
Habe nun auch den Versuch gestartet Iceweasel 3.6.10 auf Debian stable (aktuell lenny) zu backporten (aus experimental). Vorgehensweise ist wie oben beschrieben, jedoch muss man folgendes beachten:

  1. dpkg-buildpackage wird rummeckern, dass Abhängigkeiten nicht stimmen
  2. Manuell Abhängigkeiten, die dpkg beanstandet nachinstallieren und Versionen in debian/control anpassen!! (ganz wichtig)
  3. Für Iceweasel muss auch curl.h verfügbar sein, welche man aus libcurl4-openssl-dev oder libcurl4-gnutls-dev bekommt
  4. Die Datei .mozconfig anlegen und folgenden Inhalt einfügen ac_add_options –enable-application=browser
  5. Anschließend kann dpkg-buildpackage normal durchgeführt werden!

Have a lot of fun!

One Response to “Crashkurs: Backporting – Quick and Dirty / Wine und Iceweasel (Firefox)”

  1. Wendell Nagelkirk Says:

    Greetings from Colorado! I’m bored to tears at work so I decided to browse your site on my iphone during lunch break. I love the knowledge you provide here and can’t wait to take a look when I get home. I’m amazed at how fast your blog loaded on my cell phone .. I’m not even using WIFI, just 3G .. Anyways, superb blog!

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

Twitter links powered by Tweet This v1.8.3, a WordPress plugin for Twitter.