Kapitel 8. Aktualisieren des Pakets

Inhaltsverzeichnis

8.1. Neue Debian-Revision
8.2. Überprüfung einer neuen Version der Originalautoren
8.3. Neue Version der Originalautoren
8.4. Den Paketstil aktualisieren
8.5. UTF-8-Umstellung
8.6. Erinnerungen für die Paketaktualisierung

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.

Nachdem Sie ein Paket veröffentlichen, werden Sie es bald aktualisieren müssen.

Nehmen wir an, dass ein Fehlerbericht für Ihr Paket unter #654321 eingereicht wurde und er ein Problem beschreibt, das Sie lösen können. Sie können wie folgt eine neue Debian-Revision des Pakets erstellen:

Ein schwieriger Fall kann auftreten, falls Sie ein lokales Paket erstellen, um mit dem Paketieren zu experimentieren, bevor Sie die normale Version in das offizielle Archiv hochladen, z.B. 1.0.1-1. Für reibungslosere Upgrades ist es eine gute Idee, einen changelog-Eintrag mit einer Versionszeichenkette wie 1.0.1-1~rc1 zu erstellen. Sie können changelog bereinigen, indem Sie Ihre lokalen Änderungseinträge in einen einzigen Eintrag für das offizielle Paket zusammenfassen. Lesen Sie Abschnitt 2.6, „Name und Version des Pakets“ für die Reihenfolge von Versionszeichenketten.

Wenn Sie Pakete für eine neue Veröffentlichung der Originalautoren für das Debian-Archiv vorbereiten, müssen Sie zuerst die neue Veröffentlichung der Originalautoren prüfen.

Beginnen Sie damit, dass Sie changelog, NEWS und eventuell weitere mit der neuen Version veröffentlichte Dokumentation lesen.

Sie können dann Änderungen zwischen den alten und den neuen Quellen der Originalautoren wie folgt prüfen und dabei nach allem Verdächtigem Ausschau halten:

$ diff -urN foo-alteVersion foo-neueVersion

Änderungen durch Autotools an einigen automatisch erstellten Dateien wie missing, aclocal.m4, config.guess, config.h.in, config.sub, configure, depcomp, install-sh, ltmain.sh und Makefile.in können ignoriert werden. Sie können sie vor der Ausführung von diff in den Quellen für die Prüfung löschen.

Falls ein Paket foo korrekt im neueren Format 3.0 (native) oder 3.0 (quilt) paketiert ist, besteht das Paketieren einer neuen Version der Originalautoren im wesentlichen im Verschieben des alten Verzeichnisses debian in die neuen Quellen. Dies kann durch Ausführung von tar xvzf /Pfad/zu/foo_alteVersion.debian.tar.gz in den entpackten Quellen passieren. [78] Natürlich müssen Sie einige offensichtliche Hausaufgaben machen:

  • Erstellen Sie eine Kopie der Quellen der Originalautoren als foo_neueVersion.orig.tar.gz-Datei.

  • Aktualisieren Sie die Debian-Datei changelog mit dch -v neueVersion-1.

    • Fügen Sie einen Eintrag mit New upstream release hinzu.

    • Beschreiben Sie genau die Änderungen in der neuen Veröffentlichung der Originalautoren, die berichtete Fehler schließen, und schließen Sie diese Fehler, indem Sie Closes: #Fehler_Nummer hinzufügen.

    • Beschreiben Sie genau die Änderungen an der neuen Veröffentlichung der Originalautoren durch den Betreuer, die berichtete Fehler schließen, und schließen Sie diese Fehler, indem Sie Closes: #Fehler_Nummer hinzufügen.

  • while dquilt push; do dquilt refresh; done, um alle Patches anzuwenden und gleichzeitig fuzz (Unschärfe) zu entfernen.

Falls das Patchen/Zusammenfügen nicht reibungsfrei lief, prüfen Sie die Situation (Hinweise verbleiben in .rej-Dateien).

  • Falls ein Patch, den Sie an den Quellen angewandt hatten, in die Quellen der Originalautoren integriert wurde,

    • führen Sie dquilt delete aus, um ihn zu entfernen.

  • Falls ein Patch, den Sie auf die Quellen anwandten, mit den neuen Änderungen in den Quellen der Originalautoren in Konflikt steht,

    • wenden Sie dquilt push -f an, um die alten Patches anzuwenden und Rückweisungen als baz.rej zu erzwingen.

    • Bearbeiten Sie die Datei baz manuell, um den geplanten Effekt von baz.rej zu erreichen.

    • dquilt refresh, um den Patch zu aktualisieren

  • Fahren Sie mit while dquilt push; do dquilt refresh; done wie gewohnt fort.

Dieser Prozess kann mit dem Befehl uupdate(1) wie folgt automatisiert werden:

$ apt-get source foo
...
dpkg-source: info: foo wird nach foo-AlteVersion extrahiert
dpkg-source: info: foo_AlteVersion.orig.tar.gz wird entpackt
dpkg-source: info: foo_AlteVersion-1.debian.tar.gz wird angewandt
$ ls -F
foo-AlteVersion/
foo_AlteVersion-1.debian.tar.gz
foo_AlteVersion-1.dsc
foo_AlteVersion.orig.tar.gz
$ wget http://example.org/foo/foo-NeueVersion.tar.gz
$ cd foo-AlteVersion
$ uupdate -v NeueVersion ../foo-NeueVersion.tar.gz
$ cd ../foo-NeueVersion
$ while dquilt push; do dquilt refresh; done
$ dch
… Änderungen dokumentieren

Falls Sie eine wie in Abschnitt 5.21, „watch beschriebene Datei debian/watch eingerichtet haben, könen Sie den Befehl wget überspringen. Sie führen einfach uscan(1) in dem Verzeichnis foo-alteVersion statt des Befehls uupdate aus. Damit werden automatisch die aktualisierten Quellen gesucht, heruntergeladen und der Befehl uupdate ausgeführt. [79]

Sie können diese aktualisierten Quellen veröffentlichen, indem Sie die Schritte aus Abschnitt 6.1, „Kompletter (Neu-)Bau“, Kapitel 7, Überprüfen des Pakets auf Fehler und Kapitel 9, Das Paket hochladen wiederholen.

Die Aktualisierung des Paketierungsstils ist keine notwendige Aktivität beim Aktualisieren eines Pakets. Allerdings erlaubt dies Ihnen, die gesamten Möglichkeiten des modernen debhelper-Systems und des Quellformats 3.0 auszunutzen. [80]

  • Falls Sie aus irgend einem Grund gelöschte Schablonendateien erneut erstellen müssen, können Sie dh_make mit der Option --addmissing in dem gleichen Debian-Quellverzeichnis aufrufen. Danach bearbeiten Sie diese entsprechend.

  • Falls das Paket noch nicht aktualisiert wurde, um die v7+-dh-Syntax von debhelper für die Datei debian/rules zu verwenden, aktualisieren Sie es, um dh zu verwenden. Aktualisieren Sie die Datei debian/control entsprechend.

  • Falls Sie die mit dem Makefile-Einschlussmechanismus des Common Debian Build System (cdbs) erzeugte Datei rules in die dh-Syntax umwandeln wollen, schauen Sie sich die folgenden Informationen an, um seine DEB_*-Konfigurationsvariablen zu verstehen:

  • Falls Sie ein 1.0-Quellpaket ohne die Datei foo.diff.gz haben, können Sie sie auf das neuere Quellformat 3.0 (native) umstellen, indem Sie debian/source/format mit 3.0 (native) erstellen. Der Rest der Dateien debian/* kann einfach so kopiert werden.

  • Falls Sie ein 1.0-Quellpaket mit der Datei foo.diff.gz haben, können Sie es in das neuere Quellformat 3.0 (quilt) umwandeln, indem Sie die Datei debian/source/format mit 3.0 (quilt) erstellen. Der Rest der Dateien debian/* kann einfach so kopiert werden. Importieren Sie die Datei gross.diff, die vom Befehl filterdiff -z -x '*/debian/*' foo.diff.gz > gross.diff erstellt wurde, in Ihr quilt-System, falls notwendig. [81]

  • Falls es mit einem anderen Patch-System wie dpatch, dbs oder cdbs mit -p0, -p1 oder -p2 paketiert war, wandeln Sie es unter Verwendung des deb3-Skripts aus http://bugs.debian.org/581186 in das quilt-Format um.

  • Falls es mit dem Befehl dh mit der Option --with quilt oder mit den Befehlen dh_quilt_patch und dh_quilt_unpatch paketiert wurde, entfernen Sie diese und sorgen Sie dafür, dass das neuere Format 3.0 (quilt) verwandt wird.

Sie sollten die DEP - Debian Enhancement Proposals prüfen und akzeptierte (ACCEPTED) Vorschläge umsetzen.

Sie müssen auch andere in Abschnitt 8.3, „Neue Version der Originalautoren“ beschriebene Aufgaben erledigen.

Falls die Dokumente der Originalautoren in alten Kodierungsschemata vorliegen, ist es eine gute Idee, sie in UTF-8 umzuwandeln.

  • Verwenden Sie iconv(1) für die Konvertierung reiner Textdateien.

    iconv -f latin1 -t utf8 foo_in.txt > foo_out.txt
    
  • Verwenden Sie w3m(1) zur Umwandlung von HTML-Dateien in reine UTF-8-Textdateien. Stellen Sie dabei sicher, dass sie es unter einer UTF-8-Locale ausführen.

    LC_ALL=en_US.UTF-8 w3m -o display_charset=UTF-8 \
            -cols 70 -dump -no-graph -T text/html \
            < foo_in.html > foo_out.txt
    

Es folgen ein paar Erinnerungen für die Aktualisierung von Paketen:



[76] Um das Datum in das benötigte Format zu bekommen, verwenden Sie LANG=C date -R.

[77] Falls Sie den Befehl dch -r zur Durchführung dieser letzten Änderung verwenden, stellen Sie sicher, dass Sie die Datei changelog explizit im Editor speichern.

[78] Falls ein Paket foo im alten Format 1.0 paketiert ist, kann dies stattdessen durch zcat /Pfad/nach/foo_alte_Version.diff.gz|patch -p1 in der neuen entpackten Quelle durchgeführt werden.

[79] Falls der Befehl uscan die aktualisierten Quellen herunterlädt, aber nicht den Befehl uupdate ausführt, sollten Sie die Datei debian/watch korrigieren, um debian uupdate am Ende der URL zu haben.

[80] Falls Ihr Sponsor oder andere Betreuer dem Aktualisieren des Paketierungsstils widersprechen, argumentieren Sie nicht. Es gibt wichtigere Dinge zu erledigen.

[81] Mit dem Befehl splitdiff können Sie gross.diff in viele kleine, inkrementelle Patches zerteilen.