1. Überblick über die Werkzeuge der Debian-Betreuer¶
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 hochentwickelten Paketverwaltungswerkzeugen, andere nicht. Debian ist dies egal. Jedes Werkzeug, das diese Aufgabe erfüllt, ist gut. Daher ist dieser Abschnitt nicht dazu gedacht, jemandem vorzuschreiben, welche Werkzeuge er benutzen oder wie er mit seinen Pflichten als Betreuer umgehen soll. Er ist auch nicht dazu gedacht, ein besonderes Werkzeug zu befürworten, um ein anderes auszuschließen.
Die meisten Beschreibungen dieser Pakete entstammen selbst den tatsächlichen Paketbeschreibungen. Weitere Informationen sind in der Paketbeschreibung selbst zu finden. Sie können außerdem mit dem Befehl apt-cache show
Paketname zusätzliche Informationen abrufen.
1.1. Kernwerkzeuge¶
Die folgenden Werkzeuge werden größtenteils von jedem Betreuer benötigt.
1.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 solche sind sie für jeden Debian-Betreuer erforderlich.
1.1.2. debconf
¶
debconf
stellt eine einheitliche Schnittstelle zur Verfügung, um Pakete interaktiv zu konfigurieren. Es gibt unterschiedliche Bedienoberflächen, d.h. es erlaubt Endanwendern, Pakete mit einer reinen Textoberfläche, einer HTML-Oberfläche oder einer Dialogoberfläche zu konfigurieren. Neue Bedienoberflächen können als Module hinzugefügt werden.
Dokumentation für dieses Paket ist im Paket debconf-doc
enthalten.
Viele sind der Ansicht, dieses System sollte für alle Pakete verwandt werden, die eine interaktive Konfiguration erfordern; siehe Konfigurationsverwaltung mit debconf. Derzeit ist debconf
nicht in den Debian-Richtlinien vorgeschrieben, was sich aber zukünftig ändern könnte.
1.1.3. fakeroot
¶
fakeroot
simuliert Root-Rechte. Dies ermöglicht Ihnen, Pakete zu erstellen, ohne Root zu sein (Pakete möchten üblicherweise Dateien mit Root-Besitzrechten installieren). Falls Sie fakeroot
installiert haben, wird dpkg-buildpackage
es automatisch benutzen.
1.2. Lint-Werkzeuge für Pakete¶
Gemäß dem Free On-line Dictionary of Computing (FOLDOC) ist »lint« ein Unix-Verarbeitungsprogramm für die Sprache C, das gründlichere Code-Prüfungen enthält als übliche C-Compiler. Lint-Werkzeuge für Pakete helfen Paketbetreuern, häufige Probleme und Richtlinienverletzungen in ihren Paketen automatisiert zu finden.
1.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, wie auch einige Prüfungen für häufige Fehler.
Sie sollten sich regelmäßig das neueste 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 deren Grundlage in den Debian-Richtlinien ist und wie das Problem üblicherweise behoben werden kann.
Es sei für weitere Informationen darüber, wie und wann Lintian benutzt wird, auf Das Paket testen verwiesen.
Sie können außerdem eine Zusammenfassung aller Probleme, die Lintian für Ihre Pakete meldet, unter https://lintian.debian.org/ abfragen. Diese Berichte enthalten die letzte Ausgabe von lintian
für die ganze Entwicklungsdistribution (Unstable
).
1.2.2. lintian-brush
¶
lintian-brush
contains a set of scripts that can automatically
fix more than 80 common lintian issues in Debian packages.
It comes with a wrapper script that invokes the scripts, updates the changelog (if desired) and commits each change to version control.
1.2.3. piuparts
¶
piuparts
is the .deb
package installation, upgrading, and removal
testing tool.
piuparts
tests that .deb packages
handle installation, upgrading,
and removal correctly. It does this by creating a minimal Debian
installation in a chroot, and installing, upgrading, and removing packages
in that environment, and comparing the state of the directory tree before
and after. piuparts
reports any files that have been added, removed,
or modified during this process.
piuparts
is meant as a quality assurance tool for people who create
.deb
packages to test them before they upload them to the Debian
archive.
1.2.4. debdiff
¶
debdiff
(aus dem Paket devscripts
, 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 Unterschiede, die ausgegeben werden, in Ordnung sein, aber es kann Ihnen helfen, verschiedene Unfälle zu vermeiden.
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 von »changes«-Dateien:
debdiff package_1-1_arch.changes package_2-1_arch.changes
Um weitere Informationen zu erhalten, lesen Sie debdiff 1.
1.2.5. diffoscope
¶
diffoscope
provides in-depth comparison of files, archives, and directories.
diffoscope
will try to get to the bottom of what makes files or directories
different. It will recursively unpack archives of many kinds and transform
various binary formats into more human readable form to compare them.
Originally developed to compare two .deb
files or two changes
files
nowadays it can compare two tarballs, ISO images, or PDF just as easily and
supports a huge variety of filetypes.
The differences can be shown in a text or HTML report or as JSON output.
1.2.6. duck
¶
duck
, the Debian Url ChecKer, processes several fields in the
debian/control
, debian/upstream
, debian/copyright
,
debian/patches/*
and systemd.unit
files and checks if URLs,
VCS links and email address domains found therein are valid.
1.2.7. adequate
¶
adequate
checks packages installed on the system and reports bugs
and policy violations.
The following checks are currently implemented:
- broken symlinks
- missing copyright file
- obsolete conffiles
- Python modules not byte-compiled
/bin
and/sbin
binaries requiring/usr/lib
libraries- missing libraries, undefined symbols, symbol size mismatches
- license conflicts
- program name collisions
- missing alternatives
- missing
binfmt
interpreters and detectors - missing
pkg-config
dependencies
1.2.8. i18nspector
¶
i18nspector
is a tool for checking translation templates (POT), message
catalogues (PO) and compiled message catalogues (MO) files for common problems.
1.2.9. cme
¶
cme
is a tool from the libconfig-model-dpkg-perl
package is an editor
for dpkg source files with validation. Check the package description to see
what it can do.
1.2.10. licensecheck
¶
licensecheck
attempts to determine the license that applies to each
file passed to it, by searching the start of the file for text belonging
to various licenses.
1.2.11. blhc
¶
blhc
is a tool which checks build logs for missing hardening flags.
1.3. Helferskripte für debian/rules
¶
Paketerstellungswerkzeuge erleichtern das Verfassen von debian/rules
-Dateien. Lesen Sie Helferskripte, um weitere Informationen darüber zu erhalten, warum dies erwünscht und jenes unerwünscht sein könnte.
1.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 anderen Lösungen ist debhelper
in mehrere kleine, einfache Befehle aufgeteilt, die auf eine durchgängige Art zusammenarbeiten und dabei eine verglichen mit anderen Tools fein granuläre Kontrolle für »debian/rules« erlaubt.
Es gibt eine zu große Zahl kleiner Erweiterungspakete für debhelper
, die zu kurzlebig sind, um sie hier zu dokumentieren. Sie können die Liste der meisten von Ihnen ansehen, indem Sie apt-cache search ^dh-
aufrufen.
When choosing a debhelper
compatibility level for your package, you
should choose the highest compatibility level that is supported in the
most recent stable release. Only use a higher compatibility level if you
need specific features that are provided by that compatibility level
that are not available in earlier levels.
In the past the compatibility level was defined in debian/compat
,
however nowadays it is much better to not use that but rather to use a
versioned build-dependency like debhelper-compat (=12)
.
1.3.2. dh-make
¶
Das Paket dh-make
enthält ein Programm namens dh_make
, das ein Gerüst von Dateien erstellt, die nötig sind, um Debian-Pakete aus einem Quellcode-Verzeichnisbaum zu erstellen. Wie der Name schon nahelegt, ist dh_make
eine Neufassung von debmake
, dessen Vorlagendateien 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 trotzdem noch grundlegende Arbeiten zu erledigen: Die Last für die Feinabstimmung und das Paket funktional und richtlinienkonform zu machen, liegt immer noch beim Betreuer.
1.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, Abhängigkeiten zu anderen Paketen zu generieren.
1.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.
1.4.1. git-buildpackage
¶
git-buildpackage
stellt die Fähigkeit bereit, Debian-Quellpakete in ein Git-Depot einzuspeisen oder zu importieren, ein Debian-Paket aus dem Git-Depot zu bauen und bei der Integration von Änderungen der Originalautoren in das Depot zu helfen.
Diese Hilfswerkzeuge bieten eine Infrastruktur, um Debian-Betreuern den Gebrauch von Git zu erleichtern. Dies ermöglicht es, getrennte Git-Zweige von Paketen für die Distributionen Stable
, Unstable
und möglicherweise Experimental
vorzuhalten, zusammen mit den anderen Vorteilen eines Versionsverwaltungssystems.
1.4.2. debootstrap
¶
Das Paket und Skript debootstrap
ermöglicht Ihnen das Urladen eines Debian-Basissystems in irgendeinen Teil Ihres Dateisystems. Mit Basissystem ist hier das 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 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 unten.
1.4.3. pbuilder
¶
pbuilder
erstellt ein Chroot-System und baut ein Paket innerhalb der Chroot-Umgebung. Es ist sehr nützlich, um die Bauabhängigkeiten des Pakets zu überprüfen und sicherzustellen, dass keine unnötigen oder falschen Bauäbhängigkeiten in dem resultierenden Paket existieren.
Ein verwandtes Paket ist cowbuilder
, das den Bauprozess mittels eines COW-Dateisystems auf jedem Standard-Linux-Dateisystem beschleunigt.
1.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 in wanna-build und unter https://buildd.debian.org/ können Sie das System in Aktion sehen.
1.5. Programme zum Hochladen von Paketen¶
Die folgenden Pakete helfen, den Prozess, Pakete in das offizielle Archiv hochzuladen, zu automatisieren oder zu vereinfachen.
1.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.
1.5.2. dput
¶
Mit dem Paket und Skript dput
läßt sich das gleiche erreichen wie mit 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 (dry-run) auszuführen.
1.6. Automatisieren der Paketverwaltung¶
Die folgenden Werkzeuge helfen, verschiedene Verwaltungsaufgaben vom Hinzufügen von Änderungsprotokolleinträgen oder Signaturzeilen über das Nachschlagen von Fehlern in Emacs bis zum Gebrauch vom neuesten und offiziellen config.sub
zu automatisieren.
1.6.1. devscripts
¶
devscripts
is a package containing wrappers and tools that are very
helpful for maintaining your Debian packages. Example scripts include
debchange
(or its alias, dch
), which manipulates your
debian/changelog
file from the command-line, and debuild
, which
is a wrapper around dpkg-buildpackage
. The bts
utility is also
very helpful to update the state of bug reports on the command line.
uscan
can be used to watch for new upstream versions of your
packages. suspicious-source
outputs a list of files which are not
common source files.
Eine vollständige Liste der verfügbaren Skripte finden Sie auf der Handbuchseite devscripts 1.
1.6.2. reportbug
¶
reportbug
is a tool designed to make the reporting of bugs in Debian
and derived distributions relatively painless. Its features include:
- Integration with mutt and mh/nmh mail readers.
- Access to outstanding bug reports to make it easier to identify whether problems have already been reported.
- Automatic checking for newer versions of packages.
reportbug
is designed to be used on systems with an installed mail
transport agent; however, you can edit the configuration file and send
reports using any available mail server.
This package also includes the querybts
script for browsing the
Debian bug tracking system.
1.6.3. autotools-dev
¶
autotools-dev
enthält optimale Vorgehensweisen für Leute, die Pakete betreuen, in denen autoconf
und/oder automake
zum Einsatz kommt. Außerdem enthält es anerkannte config.sub
- und config.guess
-Dateien, von denen bekannt ist, dass sie auf allen Debian-Portierungen funktionieren.
1.6.4. 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.
1.6.5. alien
¶
alien
konvertiert Binärpakete zwischen verschiedenen Paketformaten, einschließlich Debian, RPM (RedHat), LSB (Linux Standard Base), Solaris und Slackware.
1.6.6. 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 Programms aufzulisten und um den letzten Eintrag in einer debian/changelog
-Datei abzuschließen.
1.6.7. dpkg-depcheck
¶
dpkg-depcheck
(aus dem Paket devscripts
, 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 Übersicht über die 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.
1.7. Portierungswerkzeuge¶
Die folgenden Werkzeuge sind hilfreich für Portierer und Kompilierung für andere Plattformen.
1.7.1. 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 verbessert es die Funktionalität von dpkg-buildpackage
und dpkg-shlibdeps
, um das Kompilieren von Paketen für andere Plattformen (cross-compiling) zu unterstützen.
1.8. Dokumentation und Information¶
Die folgenden Pakete stellen Informationen für Betreuer zur Verfügung oder helfen bei der Erstellung von Dokumentation.
1.8.1. debian-policy
¶
The debian-policy
package contains the Debian Policy Manual
and related documents, which are:
- Debian Policy Manual
- Filesystem Hierarchy Standard (FHS)
- Debian Menu sub-policy
- Debian Perl sub-policy
- Debian configuration management specification
- Machine-readable debian/copyright specification
- Autopkgtest - automatic as-installed package testing
- Authoritative list of virtual package names
- Policy checklist for upgrading your packages
The Debian Policy Manual the policy relating to packages and details of
the packaging mechanism. It covers everything from required gcc
options to the way the maintainer scripts (postinst
etc.) work,
package sections and priorities, etc.
Also useful is the file
/usr/share/doc/debian-policy/upgrading-checklist.txt.gz
,
which lists changes between versions of policy.
1.8.2. doc-debian
¶
doc-debian
contains lots of useful Debian-specific documentation:
- Debian Linux Manifesto
- Constitution for the Debian Project
- Debian Social Contract
- Debian Free Software Guidelines
- Debian Bug Tracking System documentation
- Introduction to the Debian mailing lists
1.8.3. developers-reference
¶
The developers-reference
package contains the document you are
reading right now, the Debian Developer's Reference, a set of
guidelines and best practices which has been established by and for
the community of Debian developers.
1.8.4. maint-guide
¶
The maint-guide
package contains the Debian New Maintainers' Guide.
This document tries to describe the building of a Debian package to ordinary Debian users and prospective developers. It uses fairly non-technical language, and it's well covered with working examples.
1.8.5. packaging-tutorial
¶
This tutorial is an introduction to Debian packaging. It teaches prospective developers how to modify existing packages, how to create their own packages, and how to interact with the Debian community.
In addition to the main tutorial, it includes three practical sessions
on modifying the grep
package, and packaging the gnujump
game
and a Java library.
1.8.6. how-can-i-help
¶
how-can-i-help
shows opportunities for contributing to Debian.
how-can-i-help
hooks into APT
to list opportunities for contributions to
Debian (orphaned packages, bugs tagged 'newcomer') for packages installed
locally, after each APT
invocation. It can also be invoked directly, and
then lists all opportunities for contribution (not just the new ones).
1.8.7. docbook-xml
¶
docbook-xml
stellt die DocBook-XML-Dokumenttypdefinitionen (DTD) 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 XSL-Dateien zum Erstellen und Gestalten der Quelle in verschiedenen Ausgabeformaten bereit. Sie benötigen einen XSLT-Prozessor wie xsltproc
, um die XSL-Stylesheets zu verwenden. Dokumentation für die Stylesheets finden Sie in den verschiedenen docbook-xsl-doc-*
-Paketen.
Um PDF aus FO zu erstellen, benötigen Sie einen FO-Prozessor wie xmlroff
oder fop
. Ein weiteres Werkzeug, um PDF aus DocBook-XML zu generieren, ist dblatex
.
1.8.8. debiandoc-sgml
¶
debiandoc-sgml
provides the DebianDoc SGML DTD, which has been
commonly used for Debian documentation, but is now deprecated
(docbook-xml
or python3-sphinx
should be used instead).
1.8.9. debian-keyring
¶
Enthält die öffentlichen GPG-Schlüssel der Debian-Entwickler und Paketbetreuer. Siehe Verwalten Ihres öffentlichen Schlüssels und die Paketdokumentation für weitere Informationen.
1.8.10. debian-el
¶
debian-el
stellt einen Emacs-Modus bereit, um Debian-Binärpakete anzusehen. Dies ermöglicht Ihnen, ein Paket zu untersuchen, ohne es entpacken zu müssen.