Open Source im professionellen Einsatz

Keine blinden Passagiere

Die Urheber von Software meinen es häufig gut mit ihren Benutzern und packen in ihren Programmquelltext ein »debian« -Verzeichnis, mit dem Endanwender dann schnell und leicht zu einem ».deb« -Paket kommen. Für Debian-Entwickler war das ärgerlich: Mit dem zuvor schon beschriebenen Diff-Verfahrens war es nicht sinnvoll möglich, Files im Debian-Ordner zu entfernen, »dpkg-source« hat fehlende Dateien beim Erstellen des ».diff« -File einfach ignoriert. Das Resultat war, dass selbst nach dem Erstellen des Pakets durch einen Debian-Entwickler im »debian« -Verzeichnis oft noch Altlasten des gleichen Ordners vom Programmautor vorhanden waren.

Deb-Source 3.0 löst das Problem: Erkennt »dpkg-source« im Tarball der originalen Quellen ein Debian-Verzeichnis, löscht es den Ordner, und zwar bevor es die Debian-Änderungen auf den Quelltext anwendet. Wer Pakete gebaut hat, in denen er sich auf vorhandene Files in »debian« verlässt, muss beim Umstieg auf Deb-Source 3 Anpassungen vornehmen.

Problemfall Patches

Die Vorgehensweise, damit »dpkg-source« die Bestimmungen von Deb-Source 3 für ein Paket einsetzt, ist einfach: Es genügt, »3.0 (quilt)« in das File »debian/source/format« zu schreiben, fertig. Zumindest in der Theorie, denn wer im Paket Patches verwendet, muss Umbauarbeiten auf sich nehmen.

Für das Sourceformat 3.0 sind zwei Namen im Umlauf, auf der einen Seite "3.0 (native)" und auf der anderen "3.0 (quilt)". Letzteres hat das Patchsystem Quilt implementiert, eine wichtige Neuerung in Source 3.0 (Abbildung 1).

Abbildung 1: Das Paket bzr[UCC:x00-fake-italic] nutzt das 3.0-(quilt)-Format, hier zu erkennen am .debian.tar.gz-File.

Abbildung 1: Das Paket bzr[UCC:x00-fake-italic] nutzt das 3.0-(quilt)-Format, hier zu erkennen am .debian.tar.gz-File.

Unter Debian-Entwicklern ist es verpönt, Veränderungen außerhalb des Debian-Ordners einfach in das ».diff« -File zu übernehmen. Die herrschende Auffassung lautetet, dass das ».diff.gz« -File nur und ausschließlich Veränderungen in »debian/« vornehmen darf. Wer diesem ungeschriebenen Gesetz folgte, stand aber vor einem Problem: Wie ist mit unvermeidbaren Änderungen im Quelltext umzugehen? Viele Autoren verwenden zum Beispiel für ihre Software hartkodierte Pfade. Wenn diese nicht dem Filesystem Hierarchy Standard (FHS) entsprechen, muss ein Debian-Entwickler die Pfade ändern, wenn er nicht gegen die Debian-Policy [2] verstoßen will. Abhilfe schafft nur eine Lösung, bei der im Debian-Ordner Patches liegen, die während des Bauvorgangs quasi on the Fly auf den Quelltext angewendet werden.

Allerdings wäre es mühsam, für jedes einzelne Paket die Logik, die ein solches System braucht, separat zu implementieren. So kursierten bereits fertige Lösungen: Dpatch [3] war eine davon, »dbs« hatte ebenso eine eigene Patchlogik, aber die bekannteste Lösung der letzten Jahre heißt Quilt [4]. All diese Systeme beruhen auf dem Prinzip, dass im »debian/patches« -Ordner Diff-Dateien liegen, die beim Bauen des Pakets dynamisch angewendet und beim Aufrufen des »clean« -Target in »debian/rules« wieder entfernt werden. Für jedes einzelne System waren dabei in »debian/rules« andere Einstellungen zu treffen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook