Das Anpassen von vorhandenen Debian Paketen kann aus verschiedenen Gründen sinnvoll sein. Es kann vorkommen, dass ein Paket für die verwendete Release-Version von Debian (noch) nicht verfügbar ist, dass andere Optionen zur Übersetzung mit dem Compiler verwendet werden sollen oder dass das Paket auf einer anderen Hardware-Architektur benutzt werden soll. Auch Anpassungen an den Init-Skripten sind unter Umständen sinnvoll.
Zunächst sind von dem gewünschten Paket die entsprechenden Dateien mit den Endungen .dsc
(Description/Beschreibung), .diff.gz
(die für Debian vorgenommenen Änderungen) und .tar.gz
(die eigentlichen Sourcen des Programms) vom Debian FTP-Server zu holen. Für das Paket gato
„gato“ finden Sie auf dem Debian FTP-Server (ftp://ftp.de.debian.org/) im Verzeichnis debian/pool/main/g/gato
die Dateien gato_0.6.4-2.diff.gz
, gato_0.6.4-2.dsc
und gato_0.6.4.orig.tar.gz
.
Im nächsten Schritt sind die Sourcen des Pakets zu entpacken. Dies geschieht nicht
(wie sonst bei Source-Paketen üblich) mit dem Kommando tar
(dieses würde lediglich die Original-Sourcen
entpacken), sondern mit dem Kommando
dpkg-source -x *.dsc
. Hierbei werden zusätzlich die für
das Debian Paket vorgenommenen Veränderungen (Patches) und alle Dateien, die sich im Verzeichnis debian/
befinden, entpackt. Die Sourcen befinden sich in
einem neuen Verzeichnis, das sich aus dem Paketnamen und der Programmversion
zusammensetzt. Wechseln Sie in dieses Verzeichnis.
Nun können die gewünschten Veränderungen an den Sourcen vorgenommen werden. Wenn Sie
Veränderungen oder Ergänzungen an Dateien im Verzeichnis debian/
vornehmen, so ist darauf zu achten, dass unter
Umständen auch Veränderungen oder Anpassungen in der Datei debian/rules
notwendig sind. Mehr zu den Funktionen der
einzelnen Dateien erfahren Sie im nächsten Abschnitt. Abschließend kann das Paket mit dpkg-buildpackage -us -uc -rfakeroot
erstellt werden.
Weitere Optionen von dpkg-buildpackage
sind ebenfalls im nächsten Abschnitt
beschrieben.
Der im vorigen Abschnitt beschriebene Weg, ein einzelnes Paket zu entpacken, anzupassen und zu übersetzen, ist sicherlich sinnvoll, wenn nur wenige Pakete so optimiert werden sollen. Bei der Gentoo Linux Distribution ist es üblich, jedes Software-Paket selbst zu übersetzen. Dort wird bereits von Anfang an festgelegt, auf welchem Prozessor das zukünftige System laufen soll, und alle Pakete werden mit den entsprechenden Optimierungen übersetzt.
Kritiker führen immer wieder gerne an, dass eine solche Optimierung auf einem Debian System mit einem hohen Aufwand verbunden ist. Schauen wir uns doch einmal an, wie hoch dieser Aufwand tatsächlich ist.
Um bereits für Debian bereitgestellte Software-Pakete erneut auf einem System zu
übersetzen, dient das Programm apt-build
aus dem gleichnamigen Paket. Dieses sollte
spätestens jetzt installiert werden. apt-build
nutzt die Konfigurationsdatei /etc/apt/apt-build.conf
. Diese hat folgenden Inhalt,
die Werte werden während der Installation des Paketes abgefragt:
build-dir = /var/cache/apt-build/build repository-dir = /var/cache/apt-build/repository Olevel = -O3 march = -march=pentium2 mcpu = -mcpu=pentium2 options =
Die in der Konfigurationsdatei enthaltenen Parameter gliedern sich in die von apt-build
verwendeten Verzeichnisse und die Optionen,
die dem GNU C Compiler übergeben werden. Hier sind die für den eingesetzten
Prozessortyp passenden Optionen anzugeben, diese werden für alle Pakete, die mittels apt-build
erzeugt werden, eingesetzt.
Des Weiteren wird ein Eintrag in der Datei /etc/apt/sources.list
benötigt, welcher auf ein
entsprechendes Repository zeigt, aus dem die Quellen der Debian Pakete bezogen werden
können. Ein solcher Eintrag kann beispielhaft wie folgt aussehen:
deb-src ftp://ftp.debian.org/debian/ stable main contrib
Ein Eintrag für das apt-build
Repository mit den optimierten Paketen auf
dem lokalen System ist während der Installation des Paketes apt-build
auf Wunsch bereits der Datei /etc/apt/sources.list
hinzugefügt worden. Diese sieht
folgendermaßen aus:
deb file:/var/cache/apt-build/repository apt-build main
Damit ist die Konfiguration von apt-build
abgeschlossen. Der Aufruf von apt-build
muss mit Administratorrechten erfolgen. apt-build
verwendet die folgenden Optionen:
Optionen
update
Aktualisiert die Liste der installierbaren Pakete.
upgrade
Aktualisiert die bereits installierten Pakete.
install
Holt die Debian Quellcode-Pakete zu dem gewünschten Paket, übersetzt die Software mit den eingestellten Optionen, erzeugt ein Debian Paket und installiert das erzeugte Paket. Ein Beispiel:
apt-build install memstat -----> Installing build dependencies (for memstat) <----- Reading Package Lists... Done Building Dependency Tree... Done 0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. -----> Downloading memstat source (memstat) <----- Reading Package Lists... Done Building Dependency Tree... Done Need to get 22.4kB of source archives. Get:1 ftp://ftp.debian.org/main memstat 0.4-1 (dsc) [482B] Get:2 ftp://ftp.debian.org/main memstat 0.4-1 (tar) [21.9kB] Fetched 22.4kB in 0s (322kB/s) dpkg-source: extracting memstat in memstat-0.4 -----> Building memstat <----- ... dpkg-genchanges: binary-only upload - not including any source code dpkg-buildpackage: binary only upload (no source included) -----> Moving packages to repository <----- -----> Updating repository <----- Using: -O3 -mcpu=pentium2 -march=pentium2 ... Reading Package Lists... Done Building Dependency Tree... Done Reading Package Lists... Done Building Dependency Tree... Done The following NEW packages will be installed: memstat ...
source
Holt und entpackt die Quellcode-Dateien zu einem Paket.
apt-build
wird also eingesetzt, um eigene, angepasste
Pakete aus bestehenden Debian Paketen zu erzeugen. Wird jedoch ein Upgrade des
Systems durchgeführt (apt-get dist-upgrade
), so wird das mittels apt-build
erzeugte, angepasste Paket durch das
offizielle Debian Paket ersetzt. Dies kann verhindert werden, indem die Priorität
von Paketen, die mit apt-build
erzeugt wurden, erhöht wird.
Um die Priorität solcher mittels apt-build
erzeugter Pakete zu erhöhen, muss die Datei /etc/apt/preferences
wie folgt angepasst werden:
Package: * Pin: release o=apt-build Pin-Priority: 990
Durch diese Änderung werden selbst erzeugte Pakete bei einem Upgrade nicht mehr
durch neuere, offizielle Debian Pakete überschrieben. Mit dem Kommando apt-cache policy
lässt sich dies überprüfen.
fr@wasabi]~ $ apt-cache policy Package Files: 100 /var/lib/dpkg/status release a=now 500 http://ftp2.de.debian.org sid/non-free Packages release o=Debian,a=unstable,l=Debian,c=non-free origin ftp2.de.debian.org 500 http://ftp2.de.debian.org sid/contrib Packages release o=Debian,a=unstable,l=Debian,c=contrib origin ftp2.de.debian.org 500 http://ftp2.de.debian.org sid/main Packages release o=Debian,a=unstable,l=Debian,c=main origin ftp2.de.debian.org 990 file: apt-build/main Packages release o=apt-build,a=apt-build,l=apt-build,c=main Pinned Packages:
Dies ist eine einfache und mit dem Debian Paketmanagement kompatible Methode, eigene Pakete zu verwalten. Zu beachten ist dabei, dass Updates solcher Pakete auf neue Versionen oder auf Versionen, in denen Sicherheitslücken beseitigt wurden, selbst durchzuführen sind. Werden Bibliotheken auf diese Weise selbst verwaltet, so kann dies dazuführen, dass Pakete, die auf diesen Bibliotheken aufsetzen, eventuell nicht aktualisiert werden können. In diesem Fall sind die Bibliotheken auf den neuesten Versionsstand nachzuziehen.
© 1999 - 2024 | Das Debian GNU/Linux Anwenderhandbuch von Frank Ronneburg steht unter einer Creative Commons Namensnennung-Nicht Kommerziell-Keine Bearbeitung 3.0 Deutschland Lizenz.