Inhaltsverzeichnis
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:
Falls dies als neuer Patch aufgezeichnet werden soll, führen Sie Folgendes aus:
dquilt new
,
um den Patch-Namen zu setzen
Fehlernummer.patch
dquilt add
, um
die zu korrigierende Datei anzugeben
defekte_Datei
Korrigieren Sie das Problem in den Paketquellen für den Fehler der Originalautoren
dquilt refresh
, um es in
aufzuzeichnen
Fehlernummer.patch
dquilt header -e
, um seine Beschreibung hinzuzufügen
Falls hiermit ein existierender Patch aktualisiert wird, führen Sie Folgendes durch:
dquilt pop
, um den
existierenden foo.patch
aufzurufen
foo.patch
Korrektur des Problems in der alten
foo.patch
dquilt refresh
, um
zu aktualisieren
foo.patch
dquilt header -e
, um seine Beschreibung zu aktualisieren
while dquilt push; do dquilt refresh; done
, um alle
Patches anzuwenden und dabei fuzz (Unschärfe) zu
entfernen
Fügen Sie eine neue Revision an den Anfang der Datei
changelog
hinzu, beispielsweise mit dch
-i
oder explizit mit dch -v
und fügen Sie dann die Kommentare mit ihrem Lieblingseditor
ein. [76]
Version
-Revision
Fügen Sie eine kurze Beschreibung des Fehler und der Lösung in dem
Changelog-Eintrag hinzu, gefolgt von Closes: #654321
. Auf
diese Art wird der Fehlerbericht automatisch
geschlossen, sobald Ihre neue Paketversion im Archiv akzeptiert wird.
Wiederholen Sie die obigen Schritte, um weitere Fehler zu beheben, und
aktualisieren Sie dabei die Debian-Datei changelog
mit
dch
.
Wiederholen Sie die Tätigkeiten aus Abschnitt 6.1, „Kompletter (Neu-)Bau“ und Kapitel 7, Überprüfen des Pakets auf Fehler.
Sobald Sie zufrieden sind, sollten Sie den Wert für die Distribution im
changelog
von UNRELEASED
auf den
Ziel-Distributionswert unstable
(oder
ggf. experimental
) setzen.[77]
Laden Sie Ihr Paket wie in Kapitel 9, Das Paket hochladen beschrieben hoch. Der Unterschied besteht darin, dass Sie diesmal das ursprüngliche Quellarchiv nicht beifügen, da es sich nicht geändert hat und im Debian-Archiv bereits existiert.
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.
.
Für reibungslosere Upgrades ist es eine gute Idee, einen
1.0.1
-1
changelog
-Eintrag mit einer Versionszeichenkette wie
zu erstellen. Sie können 1.0.1
-1~rc1
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 -urNfoo
-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
korrekt im
neueren Format foo
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
/
in den entpackten Quellen passieren. [78]
Natürlich müssen Sie einige offensichtliche Hausaufgaben machen:
Pfad
/zu
/foo
_alteVersion
.debian.tar.gz
Erstellen Sie eine Kopie der Quellen der Originalautoren als
foo_
-Datei.
neueVersion
.orig.tar.gz
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:
#
hinzufügen.
Fehler_Nummer
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:
#
hinzufügen.
Fehler_Nummer
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
zu erzwingen.
baz
.rej
Bearbeiten Sie die Datei
manuell, um den geplanten Effekt von
baz
zu erreichen.
baz
.rej
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 sourcefoo
... dpkg-source: info:foo
wird nachfoo
-AlteVersion
extrahiert dpkg-source: info:foo
_AlteVersion
.orig.tar.gz wird entpackt dpkg-source: info:foo
_AlteVersion
-1.debian.tar.gz wird angewandt $ ls -Ffoo
-AlteVersion
/foo
_AlteVersion
-1.debian.tar.gzfoo
_AlteVersion
-1.dscfoo
_AlteVersion
.orig.tar.gz $ wget http://example.org/foo
/foo
-NeueVersion
.tar.gz $ cdfoo
-AlteVersion
$ uupdate -vNeueVersion
../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
statt des Befehls uupdate aus. Damit werden
automatisch die aktualisierten Quellen gesucht,
heruntergeladen und der Befehl uupdate
ausgeführt. [79]
foo
-alteVersion
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:
lokale Kopie von /usr/share/doc/cdbs/cdbs-doc.pdf.gz
Falls Sie ein 1.0
-Quellpaket ohne die Datei
haben, können
Sie sie auf das neuere Quellformat foo
.diff.gz3.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
haben, können
Sie es in das neuere Quellformat foo
.diff.gz3.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/*'
erstellt
wurde, in Ihr quilt-System, falls notwendig. [81]
foo
.diff.gz > gross.diff
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 utf8foo_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:
Erhalten Sie alte Einträge im changelog
(klingt
offensichtlich, aber es gab Fälle, in denen dch
eingegeben wurde, wenn dch -i
hätte verwandt werden
sollen).
Existierende Debian-Änderungen müssen neu geprüft werden; entfernen Sie Dinge, die die Originalautoren integriert haben (in einer oder der anderen Form) und denken Sie daran, Dinge zu behalten, die noch nicht integriert wurden, falls es nicht doch überzeugende Gründe für die Entfernung gibt.
Falls Änderungen am Bausystem vorgenommen wurden (hoffentlich wissen Sie es
bei der Prüfung der Änderungen der Originalautoren), aktualisieren Sie
debian/rules
und die Bauabhängigkeiten in
debian/control
, falls notwendig.
Prüfen Sie in der Fehlerdatenbank (BTS), ob jemand Patches für derzeit offene Fehler bereitgestellt hat.
Prüfen Sie den Inhalt der Datei .changes
, um
sicherzustellen, dass Sie in die korrekte Distribution hochladen, die
richtigen Fehlerschließanweisungen im Feld Closes
enthalten sind, die Felder Maintainer
and
Changed-By
passen, die Datei GPG-signiert ist usw.
[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
im alten Format
foo
1.0
paketiert ist, kann dies stattdessen durch
zcat
/
in der neuen entpackten Quelle durchgeführt werden. Pfad
/nach
/foo
_alte_Version
.diff.gz|patch
-p1
[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.