Anhang A. Überblick über die Werkzeuge der Debian-Betreuer

Inhaltsverzeichnis

A.1. Kernwerkzeuge
A.1.1. dpkg-dev
A.1.2. debconf
A.1.3. fakeroot
A.2. Lint-Werkzeuge für Pakete
A.2.1. lintian
A.2.2. debdiff
A.3. Helper-Skripte für debian/rules
A.3.1. debhelper
A.3.2. dh-make
A.3.3. equivs
A.4. Paket-Builder
A.4.1. git-buildpackage
A.4.2. debootstrap
A.4.3. pbuilder
A.4.4. sbuild
A.5. Programme zum Hochladen von Paketen
A.5.1. dupload
A.5.2. dput
A.5.3. dcut
A.6. Verwaltungsautomatisierung
A.6.1. devscripts
A.6.2. autotools-dev
A.6.3. dpkg-repack
A.6.4. alien
A.6.5. dpkg-dev-el
A.6.6. dpkg-depcheck
A.7. Portierungswerkzeuge
A.7.1. quinn-diff
A.7.2. dpkg-cross
A.8. Dokumentation und Information
A.8.1. docbook-xml
A.8.2. debiandoc-sgml
A.8.3. debian-keyring
A.8.4. debian-maintainers
A.8.5. debview

Dieser Abschnitt enthält eine grobe Übersicht über die Werkzeuge, die Betreuern zur Verfügung stehen. Das Folgende ist beileibe nicht vollständig oder maßgeblich, sondern nur eine Anleitung für einige der beliebstesten Werkzeuge.

Debian-Betreuerwerkzeuge sind dazu gedacht, Entwicklern zu helfen und Zeit für wirklich kritische Aufgaben einzuräumen. Wie schon Larry Wall sagte, gibt es mehr als einen Weg, um etwas zu erledigen.

Einige Leute bevorzugen die Benutzung von hochrangigen Paketverwaltungswerkzeugen, andere nicht. Debian ist bei diesem Thema agnostisch; jedes Werkzeug, das seine Aufgabe erfüllt, ist gut. Daher ist dieser Abschnitt nicht dazu gedacht, jemandem vorzuschreiben, welche Werkzeuge er benutzen oder wie er mit seinen Pflichen als Betreuer umgehen soll. Er ist auch nicht dazu gedacht, ein besonderes Werkzeug zu befürworten, um ein konkurrierendes auszuschließen.

Die meisten Beschreibungen dieser Pakete entstammen selbst den tatsächlichen Paketbeschreibungen. Weitere Informationen können in der Paketbeschreibung selbst gefunden werden. Sie können außerdem mit dem Befehl apt-cache show Paketname zusätzliche Informationen lesen.

A.1. Kernwerkzeuge

Die folgenden Werkzeuge werden größtenteils von jedem Betreuer benötigt.

A.1.1. dpkg-dev

dpkg-dev enthält die Werkzeuge (einschließlich dpkg-source), die benötigt werden, um Debian-Pakete zu entpacken, zu erstellen und hochzuladen. Diese Hilfswerkzeuge enthalten die untergeordneten Funktionalitäten, die zum Erstellen und Manipulieren von Paketen benötigt werden; als solches sind sie für jeden Debian-Betreuer erforderlich.

A.1.2. debconf

debconf stellt eine einheitliche Schnittstelle zur Verfügung, um Pakete interaktiv zu konfigurieren, Es ist unabhängig von der Schnittstelle des Anwenders, erlaubt Endanwendern Pakete mit einer reinen Textschnittstelle, einer HTML-Schnittstelle oder einer Dialogschnittstelle zu konfigurieren. Neue Schnittstellen können als Module hinzugefügt werden.

Sie können Dokumentation für dieses Paket im Paket debconf-doc finden.

Viele sind der Ansicht, dieses System sollte für alle Pakete verwandt werden, die eine interaktive Konfiguration erfordern; siehe Abschnitt 6.5, „Konfigurationsverwaltung mit debconf. Derzeit wird debconf noch nicht von den Debian Richtlinien benötigt, aber das kann sich in der Zukunft ändern.

A.1.3. fakeroot

fakeroot simulates root privileges. This enables you to build packages without being root (packages usually want to install files with root ownership). If you have fakeroot installed, dpkg-buildpackage will use it automatically.

A.2. Lint-Werkzeuge für Pakete

Gemäß dem Free On-line Dictionary of Computing (FOLDOC) ist »lint« ein Unix-Prozessor für die Sprache C, der gründlichere Prüfungen des Codes mitbringt als übliche C-Kompiler. Lint-Werkzeuge für Pakete helfen Paketbetreuern automatisch häufige Probleme und Richtlinienverletzungen in ihren Paketen zu finden.

A.2.1. lintian

lintian zerlegt Debian-Pakete und gibt Informationen über Fehler und Richtlinien-Verletzungen aus. Es enthält automatisierte Prüfungen für viele Gesichtspunkte der Debian-Richtlinien, als auch einige Prüfungen für häufige Fehler.

Sie sollten regelmäßig das neuste lintian aus unstable besorgen und all Ihre Pakete überprüfen. Beachten Sie, dass die Option -i detaillierte Erklärungen liefert, was jeder Fehler oder jede Warnung bedeutet, was die Grundlage in der Richtlinie ist und wie das Problem üblicherweise behoben werden kann.

Es sei für weitere Informationen darüber, wie und wann Lintian benutzt wird, auf Abschnitt 5.3, „Das Paket testen“ verwiesen.

Sie können außerdem eine Zusammenfassung aller Probleme, die Lintian in all Ihren Paketen meldet unter https://lintian.debian.org/ ansehen. Diese Berichte enthalten die letzte Ausgabe von lintian für die ganze Entwicklungsdistribution (unstable).

A.2.2. debdiff

debdiff (aus dem Paket devscripts, Abschnitt A.6.1, „devscripts) vergleicht die Dateilisten und »control«-Dateien zweier Pakete. Es ist ein einfacher Rückfalltest, der Ihnen hilft festzustellen, ob sich die Anzahl der Binärpakete seit dem letzten Upload verändert hat oder ob sich etwas in der »control«-Datei geändert hat. Natürlich werden einige Änderungen, die es meldet, in Ordnung sein, aber es kann Ihnen helfen verschiedene Unfälle zu verhüten.

Sie können es für ein Paar binärer Pakete ausführen:

debdiff package_1-1_arch.deb package_2-1_arch.deb

oder sogar für ein Paar aus »changes«-Dateien:

debdiff package_1-1_arch.changes package_2-1_arch.changes

Um weitere Informationen zu erhalten, lesen Sie debdiff(1).

A.3. Helper-Skripte für debian/rules

Paketerstellungswerkzeuge erleichtern das Verfassen von debian/rules-Dateien. Lesen Sie Abschnitt 6.1.1, „Helfer-Skripte“, um weitere Informationen darüber zu erhalten, warum dies erwünscht und jenes unerwünscht sein könnte.

A.3.1. debhelper

debhelper ist eine Programmsammlung, die in debian/rules benutzt werden kann, um häufige Aufgaben zu automatisieren, die sich auf das Erstellen binärer Debian-Pakete beziehen. debhelper enthält Programme, um verschiedene Dateien in Ihre Pakete zu installieren, Dateien zu komprimieren, Dateirechte zu korrigieren und Ihr Paket in das Debian-Menüsystem zu integrieren.

Anders als bei einigen Herangehensweisen ist debhelper in mehrere kleine einfache Befehle unterteilt, die auf eine durchgängige Art zusammenarbeiten. Als solches erlaubt es eine detailliertere Steuerung, als andere Werkzeuge für »debian/rules«.

Es gibt eine zu große Zahl kleiner Erweiterungspakete für debhelper, die zu kurzlebig sind, um sie zu dokumentieren. Sie können die Liste der meisten von Ihnen ansehen, indem Sie apt-cache search ^dh- aufrufen.

A.3.2. dh-make

Das Paket dh-make enthält ein Programm gleichen Namens, das ein Gerüst von Dateien erstellt, die nötig sind, um Debian-Pakete aus einem Quellcodeverzeichnisbaum zu erstellen. Wie der Name schon nahelegt, ist dh_make eine Neufassung von debmake dessen Schablonendateien dh_*-Programme von debhelper benutzen.

Während die von dh_make generierten »rules«-Dateien im Allgemeinen eine ausreichende Basis für ein funktionierendes Paket bilden, gibt es immer noch die grundlegenden Arbeiten: Die Last für die Feinabstimmung und das Paket funktional und richtlinienkonform zu machen, liegt immer noch beim Betreuer.

A.3.3. equivs

equivs ist ein weiteres Paket für die Paketerstellung. Es wird oft für den lokalen Gebrauch vorgeschlagen, falls Sie einfach ein Paket erstellen müssen, um Abhängigkeiten zu erfüllen. Es wird manchmal auch benutzt, um »Meta-Pakete« zu erstellen. Dabei handelt es sich um Pakete, deren einziger Zweck darin besteht, von anderen Paketen abzuhängen.

A.4. Paket-Builder

Die folgenden Pakete helfen beim Prozess der Paketerstellung und führen im Allgemeinen dpkg-buildpackage aus, um unterstützende Aufgaben zu behandeln.

A.4.1. git-buildpackage

git-buildpackage provides the capability to inject or import Debian source packages into a Git repository, build a Debian package from the Git repository, and helps in integrating upstream changes into the repository.

These utilities provide an infrastructure to facilitate the use of Git by Debian maintainers. This allows one to keep separate Git branches of a package for stable, unstable and possibly experimental distributions, along with the other benefits of a version control system.

A.4.2. debootstrap

Das Paket und Skript debootstrap ermöglicht Ihnen das Urladen eines Debian-Basissystems in irgendeinen Teil Ihres Dateisystems. Mit Basissystem ist ein Minimum an installierten Paketen gemeint, die nötig sind, um den Rest des Systems zu betreiben und zu installieren.

Ein solches System zu haben, kann in vielerlei Hinsicht nützlich sein. Sie können zum Beispiel mit chroot in das System gehen und wenn Sie wollen, Ihre Build-Abhängigkeiten testen. Oder Sie können testen, wie sich Ihr Paket verhält, wenn es in ein nacktes Basissystem installiert wird. Chroot-Builder benutzen dieses Paket; siehe Folgendes.

A.4.3. pbuilder

pbuilder konstruiert ein Chroot-System und erstellt ein Paket innerhalb der Chroot-Umgebung. Es ist sehr nützlich, um zu prüfen, ob die Build-Abhängigkeiten des Pakets korrekt sind und um sicher zu sein, dass keine unnötigen oder falschen Build-Abhängigkeiten in dem resultierenden Paket existieren.

A related package is cowbuilder, which speeds up the build process using COW filesystem on any standard Linux filesystem.

A.4.4. sbuild

sbuild ist ein weiterer automatisierter Builder. Er kann auch Chroot-Umgebungen benutzen. Er kann eigenständig benutzt werden oder als Teil einer verteilten Build-Umgebung über ein Netzwerk. Als letzteres ist er Teil des Systems, das Portierer benutzen, um Binärpakete für all die verfügbaren Architekturen zu erstellen. Weitere Informationen finden Sie unter Abschnitt 5.10.3.3, „wanna-build und das System können Sie unter https://buildd.debian.org/ in Aktion sehen.

A.5. Programme zum Hochladen von Paketen

Die folgenden Pakete helfen den Prozess, Pakete in das offizielle Archiv hochzuladen, zu automatisieren oder zu vereinfachen.

A.5.1. dupload

dupload ist ein Paket und ein Skript, um Debian-Pakete automatisch in das Debian-Archiv hochzuladen, den Upload zu protokollieren und Mails über den Upload eines Pakets zu versenden. Sie können es für neue Upload-Orte und -Methoden konfigurieren.

A.5.2. dput

Das Paket und Skript dput tut das gleiche wie dupload, aber auf eine andere Art. Es hat einige Funktionalitäten mehr als dupload, wie die Fähigkeit GnuPG-Signaturen und Prüfsummen vor dem Upload zu überprüfen und die Möglichkeit nach dem Upload dinstall im Leerlaufmodus auszuführen.

A.5.3. dcut

Das Skript dcut (Teil des Pakets dput, Abschnitt A.5.2, „dput) hilft beim Entfernen von Dateien aus dem FTP-Upload-Verzeichnis.

A.6. Verwaltungsautomatisierung

Die folgenden Werkzeuge helfen verschiedene Verwaltungsaufgaben vom Hinzufügen von Änderungsprotokolleinträgen oder Signaturzeilen bis zum Nachschlagen von Fehlern in Emacs zum Gebrauch vom neusten und offiziellen config.sub zu automatisieren.

A.6.1. devscripts

devscripts ist ein Paket, das Wrapper und Werkzeuge enthält, die sehr hilfreich für die Verwaltung von Debian-Paketen sind. Beispielskripte beinhalten debchange und dch, die Ihre debian/changelog-Datei von der Befehlszeile manipulieren und debuild, das ein Wrapper um dpkg-buildpackage ist. Außerdem ist das Hilfswerkzeug bts sehr hilfreich, um den Status von Fehlerberichten auf der Befehlszeile zu aktualisieren. uscan kann benutzt werden, um neue Versionen Ihres Pakets von den Originalautoren zu beobachten. debrsign kann benutzt werden, um ein Paket vor dem Upload aus der Ferne zu signieren, was angenehm ist, wenn der Rechner, auf dem Sie das Paket erstellen, sich von dem unterscheidet, auf dem die GPG-Schlüssel liegen.

Eine vollständige Liste der verfügbaren Skripte finden Sie auf der Handbuchseite devscripts(1).

A.6.2. autotools-dev

autotools-dev enthält optimale Vorgehensweisen für Leute, die Pakete betreuen, die autoconf und/oder automake benutzen. Außerdem anthält es vorschriftsmäßige config.sub- und config.guess-Dateien, von denen bekannt ist, dass sie auf allen Debian-Portierungen funktionieren.

A.6.3. dpkg-repack

dpkg-repack erstellt eine Debian-Paketdatei aus einem Paket, das bereits installiert wurde. Falls irgendwelche Änderungen vorgenommen wurden, während das Pakert entpackt war (es wurden z.B. Dateien in /etc verändert), wird das neue Paket die Änderungen erben.

Dieses Hilfswerkzeug kann das Kopieren von Paketen von einem Rechner zu einem anderen, das Neuerstellen von Paketen, die auf Ihrem System installiert wurden, aber nirgendwo mehr verfügbar sind oder das Sichern des derzeitigen Paketstatus vor dem Upgrade vereinfachen.

A.6.4. alien

alien wandelt Binärpakete zwischen verschiedenen Paketformaten, einschließlich Debian, RPM (RedHat), LSB (Linux Standard Base), Solaris und Slackware um.

A.6.5. dpkg-dev-el

dpkg-dev-el ist ein Emacs-Lisp-Paket, das Unterstützung beim Bearbeiten von Dateien im debian-Verzeichnis Ihres Pakets bietet. Es gibt dort zum Beispiel praktische Funktionen, um die aktuellen Fehler eines Programm aufzulisten und um den letzten Eintrag in einer debian/changelog-Datei zu beenden.

A.6.6. dpkg-depcheck

dpkg-depcheck (aus dem Paket devscripts, Abschnitt A.6.1, „devscripts) führt einen Befehl unter strace aus, um festzustellen, welche Pakete vom angegebenen Befehl benutzt werden.

Für Debian-Pakete ist dies nützlich, wenn Sie eine Build-Depends-Zeile für Ihr neues Paket verfassen müssen: den Build-Prozess durch dpkg-depcheck auszuführen wird Sie mit einer guten ersten Annäherung von Build-Abhängigkeiten versorgen. Zum Beispiel:

dpkg-depcheck -b debian/rules build

dpkg-depcheck kann außerdem benutzt werden um Laufzeitabhängigkeiten zu prüfen, insbesondere, wenn Ihr Paket exec(2) benutzt, um andere Programme auszuführen.

Weitere Informationen finden Sie unter dpkg-depcheck(1).

A.7. Portierungswerkzeuge

Die folgenden Werkzeuge sind hilfreich für Portierer und Kompilierung für andere Plattformen.

A.7.1. quinn-diff

quinn-diff wird benutzt, um die Unterschiede zwischen zwei Architekturen zu finden. Es könnte zum Beispiel aufzeigen, welche Pakete für die Architektur Y basierend auf Architektur X portiert werden müssen.

A.7.2. dpkg-cross

dpkg-cross ist ein Werkzeug, um Bibliotheken und Header zum Kompilieren auf anderen Plattformen auf eine Art zu installieren, die dpkg ähnlich ist. Weiterhin wird die Funktionalität von dpkg-buildpackage und dpkg-shlibdeps durch die Unterstützung vom Kompilieren auf anderen Plattformen verbessert.

A.8. Dokumentation und Information

Die folgenden Pakete stellen Informationen für Betreuer zur Verfügung oder helfen bei der Erstellung von Dokumentation.

A.8.1. docbook-xml

docbook-xml stellt die DocBook-XML-DTDen bereit, die häufig für Debian-Dokumentation benutzt werden (genauso wie die ältere Debiandoc-SGML-DTD). Dieses Handbuch wurde zum Beispiel in Docbook-XML verfasst.

Das Paket docbook-xsl stellt die XSL-Dateien zum Erstellen und Gestalten der Quelle in verschiedenen Ausgabeformaten bereit. Sie benötigen ein XSLT-Bearbeitungsprogramm wie xsltproc, um die XSL-Stylesheets zu verwenden. Dokumentation für die Stylesheets kann in den verschiedenen docbook-xsl-doc-*-Paketen gefunden werden.

Um PDF aus FO zu erstellen, benötigen Sie ein FO-Bearbeitungsprogramm wie xmlroff oder fop. Ein weiteres Werkzeug, um PDF aus DocBook-XML zu generieren ist dblatex.

A.8.2. debiandoc-sgml

debiandoc-sgml stellt die DebianDoc-SGML-DTD bereit, die normalerweise für Debian-Dokumentation benutzt aber nun missbilligt wird (stattdessen sollte docbook-xml benutzt werden). Es stellt außerdem Skripte zum Erstellen und Gestalten der Quelle in verschiedenen Ausgabeformaten bereit.

Dokumentation für die DTD kann im Paket debiandoc-sgml-doc gefunden werden.

A.8.3. debian-keyring

enthält die öffentlichen GPG- und PGP-Schlüssel der Debian-Entwickler. Siehe Abschnitt 3.2.2, „Verwalten Ihres öffentlichen Schlüssels“ und die Paketdokumentation für weitere Informationen.

A.8.4. debian-maintainers

enthält die öffentlichen GPG-Schlüssel der Debian-Betreuer. Siehe https://wiki.debian.org/DebianMaintainer für weitere Informationen.

A.8.5. debview

debview stellt einen Emacs-Modus bereit, um Debian-Binärpakete anzusehen. Dies ermöglicht Ihnen ein Paket zu untersuchen ohne es zu installieren.