Kapitel 7. Überprüfen des Pakets auf Fehler

# Kapitel 7. Überprüfen des Pakets auf Fehler

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.

## 7.1. Merkwürdige Änderungen

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`“.

## 7.2. Überprüfen einer Paketinstallation

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.

## 7.3. Überprüfen der Betreuerskripte eines Pakets

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.

## 7.4. `lintian` verwenden

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.

## 7.5. Der Befehl debc

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

    $ debc package.changes

## 7.6. Der Befehl debdiff

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.

## 7.7. Der Befehl interdiff

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.

## 7.8. Der Befehl mc

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.

Kapitel 6. Bau des Pakets |  | Kapitel 8. Aktualisieren des Pakets