Kapitel 7. Überprüfen des Pakets auf Fehler

Inhaltsverzeichnis

7.1. Merkwürdige Änderungen
7.2. Überprüfen einer Paketinstallation
7.3. Überprüfen der Betreuerskripte eines Pakets
7.4. lintian verwenden
7.5. Der Befehl debc
7.6. Der Befehl debdiff
7.7. Der Befehl interdiff
7.8. Der Befehl mc

Die Überarbeitung dieser Anleitung mit aktualisierten Inhalten und weiteren praktischen Beispielen ist unter Guide for Debian Maintainers verfügbar. Bitte verwenden Sie diese neue Anleitung als primäre Anleitung.

Es gibt einige Techniken, die Sie zum Überprüfen eines Pakets auf Fehler vor dem Upload in das öffentliche Archiv wissen sollten.

Es empfiehlt sich auch, das Testen auf einem von Ihrer Maschine verschiedenen Rechner durchzuführen. Sie müssen genau auf alle Warnungen und Fehler für alle hier beschriebenen Tests achten.

Falls Sie nach dem Bau Ihres nicht nativen Debian-Pakets im Format 3.0 (quilt) einen neuen, automatisch erstellen Patch wie debian-changes-* im Verzeichnis debian/patches finden, besteht die Möglichkeit, dass Sie Dateien versehentlich geändert haben oder das Bauskript die Quellen der Originalautoren verändert hat. Falls es Ihr Fehler ist, korrigieren Sie ihn. Falls er vom Bauskript ausgelöst wurde, korrigieren Sie das dahinterliegende Problem mit dh-autoreconf wie in Abschnitt 4.4.3, „Anpassungen der Datei rules oder umgehen Sie das Problem mit source/options wie in Abschnitt 5.24, „source/local-options.

Sie müssen überprüfen, ob Ihr Paket ohne Probleme installiert werden kann. Der Befehl debi(1) hilft Ihnen bei der Testinstallation aller erstellten Binärpakete.

$ sudo debi gentoo_0.9.12-1_i386.changes

Um Installationsprobleme auf verschiedenen Systemen zu vermeiden, müssen Sie sicherstellen, dass es keine Dateinamenskonflikte mit anderen existierenden Paketen gibt, wobei Sie die vom Debian-Archiv heruntergeladene Datei Contents-i386 verwenden. Der Befehl apt-file kann für diese Aufgabe praktisch sein. Falls es Kollisionen gibt, kümmern Sie sich um dieses echte Problem, indem Sie die Datei umbenennen, eine gemeinsame Datei in ein separates Paket verschieben, von dem verschiedene Pakete abhängen können, in Absprache mit den Betreuern anderer betroffener Pakete den Alternatives-Mechanismus nutzen (siehe update-alternatives(1)) oder indem Sie eine Conflicts-Beziehung in der Datei debian/control festlegen.

Alle Betreuerskripte (das heißt, die Dateien preinst, prerm, postinst und postrm) sind schwer korrekt zu schreiben, falls Sie nicht vom Programm debhelper automatisch erstellt werden. Verwenden Sie sie daher als neuer Betreuer nicht (siehe Abschnitt 5.18, „{post|pre}{inst|rm}).

Falls das Paket nicht triviale Betreuerskripte verwendet, testen Sie nicht nur die Installation, sondern auch das Entfernen, das vollständige Entfernen und den Upgrade-Prozess. Viele Betreuerskriptfehler zeigen sich, wenn Pakete entfernt oder endgültig entfernt werden. Verwenden Sie für die Tests den Befehl dpkg wie folgt:

$ sudo dpkg -r gentoo
$ sudo dpkg -P gentoo
$ sudo dpkg -i gentoo_Version-Revision_i386.deb

Dies sollte in einem Ablauf wie dem Folgenden passieren:

  • Installieren Sie die vorhergehende Version (falls notwendig)

  • Führen Sie ein Upgrade von der vorhergehenden Version durch

  • Führen Sie ein Downgrade auf eine vorherige Version durch (optional)

  • Entfernen Sie es vollständig

  • Installieren Sie das neue Paket

  • Entfernen Sie es

  • Installieren Sie es wieder

  • Entfernen Sie es vollständig

Falls dies Ihr erstes Paket ist, sollten Sie ein Pseudo-Paket mit einer anderen Version erstellen, um Ihr Paket vorab zu testen und zukünftige Probleme zu vermeiden.

Behalten Sie im Hinterkopf, dass die Benutzer ein Upgrade von der Version, die in der letzten Debian-Veröffentlichung enthalten war, durchführen werden, falls es schon mal veröffentlicht wurde. Denken Sie daran, auch Upgrades von dieser Version zu prüfen.

Obwohl ein Downgrade offiziell nicht unterstützt wird, ist es eine nette Geste, dies dennoch zu unterstützen.

Führen Sie lintian(1) mit Ihrer Datei .changes aus. Der Befehl lintian führt viele Skripte aus, um auf typische Paketierungsfehler zu prüfen. [75]

$ lintian -i -I --show-overrides gentoo_0.9.12-1_i386.changes

Selbstverständlich müssen Sie den Dateinamen mit dem Namen der Datei .changes, die für Ihr Paket erstellt wurde, ersetzen. Die Ausgabe des Befehls lintian verwendet die folgenden Schalter:

  • E: für Fehler; eine definitive Verletzung der Richtlinien oder ein Paketierungsfehler.

  • W: für Warnungen; eine mögliche Verletzung der Richtlinien oder ein möglicher Paketierungsfehler.

  • I: für Information; Informationen über bestimmte Aspekte der Paketierung.

  • N: für Hinweis; eine detaillierte Meldung, um bei der Fehlersuche zu helfen.

  • O: für »außer Kraft gesetzt«; eine Meldung, die durch Dateien lintian-overrides außer Kraft gesetzt, von der Option --show-overrides aber angezeigt wurde.

Wenn Sie Warnungen sehen, passen Sie Ihr Paket an, um diese zu vermeiden oder stellen Sie sicher, dass die Warnungen unberechtigt sind. Falls sie unberechtigt sind, legen Sie lintian-overrides-Dateien wie in Abschnitt 5.14, „{Paket.|source/}lintian-overrides beschrieben an.

Beachten Sie, dass Sie das Paket mit dpkg-buildpackage bauen und lintian in einem Befehl darauf anwenden können, falls Sie debuild(1) oder pdebuild(1) verwenden.

Sie können Dateien im binären Debian-Paket mit dem Befehl debc(1) auflisten.

$ debc package.changes

Sie können Dateiinhalte in zwei Debian-Quellpaketen mit dem Befehl debdiff(1) vergleichen.

$ debdiff altes-Paket.dsc neues-Paket.dsc

Sie können Dateilisten in zwei Gruppen von binären Debian-Paketen mit dem Befehl debdiff(1) vergleichen.

$ debdiff altes-Paket.changes neues-Paket.changes

Sie sind nützlich, um zu identifizieren, wass in den Quellpaketen geändert wurde und auf unbeabsichtigte Änderungen beim Aktualisieren der Binärpakete zu prüfen, wie versehentlich fehlplatzierte oder entfernte Dateien.

Sie können zwei diff.gz-Dateien mit dem Befehl interdiff(1) vergleichen. Dies ist zur Überprüfung, dass keine unbeabsichtigten Änderungen beim Aktualisieren von Paketen im alten 1.0-Quellformat durch den Betreuer an den Quellen vorgenommen wurden, nützlich.

$ interdiff -z altes-Paket.diff.gz neues-Paket.diff.gz

Das neue Quellformat 3.0 speichert Änderungen in mehreren Patch-Dateien, wie in Abschnitt 5.25, „patches/* beschrieben. Sie können die Änderungen jeder debian/patches/*-Datei auch mit interdiff nachverfolgen.

Viele dieser Dateiüberprüfungsoperationen können in einen intuitiven Prozess mit einem Dateimanager wie mc(1) verwandelt werden. Er ermöglicht es Ihnen, nicht nur die Inhalte eines *.deb-Pakets anzuschauen, sondern auch die von *.udeb, *.debian.tar.gz, *.diff.gz und *.orig.tar.gz-Dateien.

Schauen Sie nach zusätzlichen, nicht benötigten Dateien oder solchen der Länge 0, sowohl im binären als auch im Quellpaket. Oft werden (Programm-)Reste nicht korrekt bereinigt; passen Sie Ihre Datei rules an, um dies zu ermöglichen.



[75] Sie müssen die Option -i -I --show-overrides von lintian angeben, falls Sie /etc/devscripts.conf oder ~/.devscripts wie in Abschnitt 6.3, „Der Befehl debuild beschrieben angepasst haben.