AA_baustelle_sxc481611_AlexanderRist.jpg

© Alexander Rist, sxc.hu

Debian-Pakete selbst erstellen

Baustelle

Die leistungsfähigen Tools, mit denen Debian-Entwickler Pakete bauen, stehen auch Normalanwendern offen. Oft spart ihr Einsatz gegenüber dem Kompilieren per Hand sogar Aufwand.

Serie: Pakete im Eigenbau

RPM-Pakete im Eigenbau LU 07/2013, S. 88 http://www.linux-community.de/28508
DEB-Pakete im Eigenbau LU 08/2013, S. ### http://www.linux-community.de/28514
Arch-Linux-Pakete im Eigenbau LU 09/2013

Keine Distribution bietet ihren Nutzern mehr Pakete als Debian. So ist es fast selbstverständlich, dass dafür auch ein ausgefeiltes System zum Bauen von Paketen bereitsteht. Wie sein Gegenstück auf RPM-basierten Systemen automatisiert es sowohl das Kompilieren aus dem Quelltext als auch das eigentliche Erstellen des Pakets. Wie immer beim Kompilieren aus den Quellen fällt die Bindung an eine bestimmte Systemversion viel geringer aus als bei vorgefertigten Binärpaketen.

Keimzelle

Um das Debian-Build-System unter Ubuntu oder Debian zu nutzen, installieren Sie zunächst die Pakete build-essential, debhelper, dh-make, quilt, fakeroot und devscripts. Dann exportieren Sie zwei Umgebungsvariablen mit Ihrer E-Mail-Adresse und Ihrem Namen (Listing 1). Am besten fügen Sie diese Befehle Ihrer .bashrc hinzu.

Listing 1

export DEBMAIL="adresse@domain.tld"
export DEBFULLNAME="Vorname Nachname"

Sowohl für Debian als auch für Ubuntu liegen die Quellpakete in eigenen Repositories, die Sie in /etc/apt/sources.list am Schlüsselwort deb-src am Zeilenbeginn erkennen. Nach der Installation sind die Quellcode-Repositories standardmäßig aktiviert. Der Befehl apt-get source Name lädt die Quellen für das Paket Name in das aktuelle Verzeichnis herunter.

Das Arbeiten mit Root-Rechten sollten Sie vermeiden, da Sie die Dateien Name_Version.orig.tar.gz, Name_Version.debian.tar.gz und Name_Version.dsc als normaler Anwender weiterverarbeiten. Zu den genannten Dateien kommen oft noch Patches mit der Endung .diff.gz, die vor dem Kompilieren Fehler im Quellcode bereinigen. Die Datei mit der Endung .orig.tar.gz fehlt dagegen bei Paketen, bei denen die Debian-Maintainer den Quellcode selbst betreuen und zu denen daher kein Upstream existiert. Wenn die Upstream-Maintainer eines Programms dagegen die Quellen gleich in "debianisierter" Form ausliefern, also inklusive eines den Paketbau steuernden debian/-Unterverzeichnisses, fehlt Name_Version.debian.tar.gz.

Mit apt-get source entpacken Sie die Tarballs in das Verzeichnis Name_Version. Haben Sie die Debian-Quellpakete von Launchpad [1] heruntergeladen, verwenden Sie stattdessen dpkg-source -x Name_Version.dsc zum manuellen Auspacken. Ein Aufruf von dpkg-buildpackage -uc -us aus dem entpackten Quellverzeichnis heraus genügt, um die Software zu kompilieren und in ein mit Dpkg installierbares Binärpaket einzubinden. Beim ersten Aufruf mahnt dpkg-buildpackage oft noch die Installation einiger Devel-Pakete an.

Ein erneuter Aufruf nach dem Einspielen der Abhängigkeiten sollte bei Paketquellen aus der laufenden Distribution immer mit einem funktionieren DEB-Paket enden, solange sich die Grundkomponenten des Systems (Bibliotheken, Compiler) noch im Auslieferungszustand befinden. Es lohnt sich, dpkg-buildpackage an einem beliebigen Quellpaket aus der laufenden Linux-Distribution auszuprobieren, um einmal die Meldungen eines erfolgreichen Bauvorganges durch das Konsolenfenster laufen zu sehen. Sie erkennen ihn an Zeilen wie dpkg-deb: Paket »Name« wird in "../Name_Version_i386.deb" gebaut gegen Ende der Konsolenausgabe.

Beispielhaft

Den Charakter einer Fingerübung verliert der Buildpackage-Aufruf, sobald Sie damit Pakete bauen, die für das laufende System nicht installationsfertig zur Verfügung stehen. So ist Ffdiaporama [2], ein Programm zum Erzeugen von Multimedia-Shows, nicht im Repository für Ubuntu 12.04 enthalten. Für Ubuntu 12.10 und 13.04 gibt es Pakete, wie immer bei offiziellen Ubuntu-Paketen mit zugehörigen Quellpaketen [3]. Wir wollen sehen, ob die Paketquellen für Ubuntu 12.10 sich auch unter Ubuntu 12.04 kompilieren lassen. Ohne diesen Umweg kann man das Paket aus der neueren Ubuntu-Version nämlich wegen einer nicht erfüllbaren Abhängigkeit nicht installieren.

Generell gilt:Die Voraussetzungen für das Übersetzen aus den Quellen sind deutlich weniger restriktiv als die binären Abhängigkeiten eines auf ein bestimmtes System zugeschnittenen Programms. So gibt es beispielsweise keine Bindung an eine Architektur (i386, x86_64). Auch der Austausch zwischen Debian und Ubuntu klappt oft reibungslos, denn der Löwenanteil der Ubuntu-Pakete übernimmt die Quellen aus Debian "Unstable".

Die Ffdiaporama-Paketquellen erreichen Sie auf der Launchpad-Seite [3] im Abschnitt Packages in Distributions (Abbildung 1). Unter "ffdiaporama" source package in Quantal finden Sie die Dateien ffdiaporama_1.3-1.dsc, ffdiaporama_1.3.orig.tar.gz und ffdiaporama_1.3-1.debian.tar.gz, die Sie in ein gemeinsames Verzeichnis herunterladen. Der Aufruf dpkg-source -x ffdiaporama_1.3-1.dsc entpackt die Quellarchive. Aus dem dabei entstandenen Verzeichnis ffdiaporama-1.3 heraus aufgerufen baut dpkg-buildpackage -uc -us ein auf Ubuntu 12.04 zugeschnittenes Paket. Da es sich um ein umfangreiches Programm handelt, dauert das Kompilieren ein wenig.

Abbildung 1: Launchpad ist eine speziell auf die Ubuntu-Entwicklung zugeschnittene Software-Plattform. Zu fast allen gehosteten Projekten gibt es Debian-Paketquellen, oft auch Binärpakete.

Aus den Debian-Quellen lassen sich also mit zwei Kommandozeilenaufrufen vollautomatisch auf dem laufenden System installierbare Binärpakete bauen. Stammen die Quellen nicht aus Ihrer Distribution selbst, ist der Erfolg dabei keineswegs garantiert: Möglicherweise testeten die Programmentwickler ihren Quellcode nie mit den dort vorhandenen Bibliotheks- oder Compiler-Versionen. Oft kompilieren aber auch systemfremde Debian-Quellen so reibungslos wie bei Ffdiaporama.

Vor allem aber lässt sich das erzeugte Debian-Paket, sollte es nicht funktionieren, wieder gefahrlos deinstallieren oder gegebenenfalls durch die bei der Distribution mitgelieferte Version ersetzen. Der Paketmanager verhindert dabei das Überschreiben von Dateien aus anderen Paketen. Wer also gewöhnliche Anwendungsprogramme installiert, braucht nicht zu fürchten, sein System zu beschädigen. Lediglich der Austausch von Systemkomponenten bleibt trotz Paketmanagement riskant.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 8 Heftseiten

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

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Wie am Schnürchen
    In nur wenigen Schritten verwandeln Sie ein Quelltextarchiv in ein vollwertiges Debian-Paket.
  • Gut verpackt
    Kein aktuelles Paket des Lieblingsprogramms vorhanden? Kein Problem: Mit ein paar einfachen Handgriffen gelangen Sie zu einem Paket, das Sie danach sogar per PPA anderen weitergeben.
  • Baumeister
    Beim Bau von Softwarepaketen für eine bestimmte Distribution führen viele Wege zum Ziel. Checkinstall bietet vermutlich den einfachsten Weg, um selbst kompilierte Software mit der Paketverwaltung zu versöhnen.
  • Showmaster
    Richtig präsentiert, wirken Ihre Bilder und Videos gleich doppelt gut. Mit Ffdiaporama gelingt eine tolle Slideshow im Handumdrehen.
  • Zarte Pflanze
    Heute liest man Mails per IMAP. Mit Trojitá gelingt das flott, selbst bei Konten mit umfangreichen Ordnern.
Kommentare

Infos zur Publikation

LU 12/2017: Perfekte Videos

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Installation Linux mint auf stick
Reiner Schulz, 10.12.2017 17:34, 0 Antworten
Hallo, ich hab ein ISO-image mit Linux Mint auf einem Stick untergebracht Jetzt kann ich auch...
Canon Maxify 2750 oder ähnlicher Drucker
Hannes Richert, 05.12.2017 20:14, 4 Antworten
Hallo, leider hat Canon mich weiterverwiesen, weil sie Linux nicht supporten.. deshalb hier die...
Ubuntu Server
Steffen Seidler, 05.12.2017 12:10, 1 Antworten
Hallo! Hat jemand eine gute Anleitung für mich, wie ich Ubuntu Server einrichte? Habe bisher...
Tinte sparen bei neuem Drucker
Lars Schmitt, 30.11.2017 17:43, 2 Antworten
Hi Leute, ich habe mir Anfang diesen Monats einen Tintenstrahldrucker angeschafft, der auch su...
Für Linux programmieren
Alexander Kramer, 25.11.2017 08:47, 3 Antworten
Ich habe einen Zufallsgenerator entworfen und bereits in c++ programmiert. Ich möchte den Zufalls...