Inhaltsverzeichnis
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 das Folgende 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 das Folgende 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. [78]
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 von der
Archivierungswartungssoftware in dem Moment, in dem Ihr Paket im Archiv
akzeptiert wird, geschlossen.
Wiederholen Sie die obigen Schritte, um weitere Fehler zu beheben, während
Sie die Debian-Datei changelog
mit
dch
aktualisieren.
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 der Distribution im
changelog
von UNRELEASED
auf den
Ziel-Distributionswert unstable
(oder
ggf. experimental
) setzen.[79]
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 welche andere Dokumentation mit der neuen
Version veröffentlicht wurde, 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. [80]
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.22, „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 wird
automatisch nach den aktualisierten Quellen geschaut,
sie heruntergeladen und der Befehl uupdate
ausgeführt. [81]
foo
-alteVersion
Sie können diese aktualisierten Quellen veröffentlichen, in dem 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. [82]
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 diesen geeignet.
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. [83]
foo
.diff.gz > gross.diff
Falls es mit einem anderen Patch-System wie dpatch
, dbs
oder cdbs
mit -p0
,
-p1
oder -p2
paktiert war, wandeln Sie
es in quilt
unter Verwendung von
deb3
unter http://bugs.debian.org/581186 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ällen, in denen dch
eingegeben wurde, wenn dch -i
hätte verwandt werden
sollen).
Existierende Debian-Änderungen müssen neu geprüft werden; schmeißen Sie Zeug weg, das die Originalautoren eingebaut haben (in einer oder der anderen Form) und denken Sie daran, Zeug zu behalten, das noch nicht eingebaut wurde, 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 die 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-unterschrieben ist usw.
[78] Um das Datum in das benötigte Format zu bekommen, verwenden Sie
LANG=C date -R
.
[79] 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.
[80] 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
[81] 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.
[82] Falls Ihr Sponsor oder andere Betreuer dem Aktualisieren des Paketierungsstils widersprechen, argumentieren Sie nicht. Es gibt wichtigere Dinge zu erledigen.
[83]
Sie können gross.diff
in viele kleine, inkrementelle
Patches mit dem Befehl splitdiff zerteilen.