Wechseln Sie nun in das Verzeichniss des Programms und führen Sie das folgende Kommando aus:
dpkg-buildpackage -rfakeroot
Das wird alles für Sie erledigen, Sie müssen nur noch zwei mal die PGP-Mantra eingeben. Anschliessend finden Sie vier neue Dateien im darüberliegenden Verzeichniss:
Das ist das komplete Binärpaket, Sie können es mit dpkg oder dselect wie jedes andere Paket (de)installieren.
Dies ist der ursprüngliche Quellcode, mit dem jemand ihr Paket von Grund auf erstellen kann, auch wenn diese Person Debians Paketsystem nicht benutzt und den Quellcode manuell herunterladen und kompilieren muss.
Dies ist eine Zusammenfassung des Inhalts des Quellcode-Pakets. Die Datei wird
aus der Datei gentoo-0.9.12/debian/control generiert und für das Entpacken des
Quellcodes mittels dpkg-source(1)
benötigt. Diese Datei ist mit
PGP signiert, somit können sich die Leute vergewissern, dass sie von ihnen
kommt.
Diese komprimierte Datei enthält alle Zusätze und Änderungen, die Sie mit dem
ursprünglichen Quellcode gemacht haben, im Format, der als "unified
diff" bekannt ist. Die Datei wird erstellt und benutzt von
dpkg-source(1)
.
Diese Datei beschreibt die Änderungen in dieser Paket-Revision. Die
Verwaltungsprogramme für Debians FTP-Archive benötigen diese Datei zur
Installation der Binär- und Quellcode-Pakete ins FTP-Archiv. Sie wird zum Teil
aus den Dateien gentoo-0.9.12/debian/changelog und ...dsc generiert. Personen,
die ihre Dateien herunterladen, können diese mit md5sum(1)
überprüfen und sollten die Zahl nicht übereinstimmen, dann wissen sie, das die
Datei beschädigt oder gehackt wurde. Die changes-Datei ist PGP-signert, damit
die Leute ganz sicher sein können, das sie von Ihnen kommt.
Bei einem grossen Paket wollen Sie bestimmt nicht alles nach jeder kleiner Änderung in debian/rules neu kompilieren. Für Testzwecke können Sie ein .deb erstellen, ohne alles Schritte durchmachen, z.B. so:
fakeroot debian/rules binary
Vergewissern Sie sich nur, dass ihre `install'-Rule nie das untergeordnete Target `install-stamp' aufruft (ist heutzutage Normallfall), damit auch sichergestellt wird, dass `dh_clean -k` jedesmal aufgerufen wird. Und wenn irgendwann alles richtig funktioniert, führen Sie den kompleten build-Prozess nochmal aus, damit Sie korrekt uploaden können.
Lassen Sie lintian(1)
auf ihre .changes-Datei los; dieses Programm
findet viele Fehler, die beim Paketerstellen häufig gemacht werden. Der Aufruf
ist folgender:
lintian -i gentoo_0.9.12-1_i386.changes
Den Dateinamen ersetzen Sie durch den Namen der changes-Datei ihres Pakets. Erscheinen bei der Überprüfung einige Fehler, (mit E: anfangende Zeilen), lesen Sie die Erklärung (die N:-Zeilen), korrigieren Sie die Fehler und erstellen Sie das Paket neu, wie in "Bau" des Pakets., Abschnitt 7.1 beschrieben wurde. Erscheinen nur Zeilen mit W: am Anfang, dann sind es nur Warnungen und Sie können davon ausgehen, dass ihr Paket in Ordnung ist und wahrscheinlich nur einige Verbesserungen braucht.
Noch ein Tip: Sie können dpkg-buildpackage und lintian auf einmal ausführen,
mit dem Befehl debuild(1)
.
Betrachten Sie nun den Inhalt des Pakets mit einem Dateimanager wie
mc(1)
oder entpacken Sie es temporär mit Hilfe von
dpkg-deb(1)
. Halten Sie Ausschau nach unnötigen Dateien im
Quellcode und im Binär-Paket, für den Fall das etwas schief ging oder
irgendwelcher Scrott beim "clean" übrig geblieben ist. Tips: `zgrep
^+++ ../gentoo_0.9.12-1.diff.gz` erzeugt eine Liste der neuen und veränderten
Dateien im Quellcode, und `dpkg-deb -c gentoo_0.9.12-1_i386.deb` listet die im
Paket enthaltenen Dateien auf.
Installieren Sie das Paket nun selbst, z.B. mit dem Kommando
debi(1)
als root. Versuchen Sie jetzt, das Paket auf anderen
Rechnern zu installieren und das Programm laufen zu lassen, passen Sie dabei
auf Warnungen und Fehlermeldungen bei der Installation und Ausführung auf.
Später, wenn Sie eine neue Version des Pakets erstellen, sollten Sie folgende Schritte durchführen, um die Upgrade-Kompabilität zu überprüfen:
Nun, nach dem Sie das Paket ausreichend getestet haben, sollten Sie die
Paketdateien auf master.debian.org uploaden, z.B. mit Hilfe von
dupload(1)
. Zunächst müssen Sie duploads Konfigurationsdatei
~/.dupload.conf erstellen. Schreiben Sie etwas wie folgendes dort rein:
package config; $default_host = "ftp-master"; $cfg{"ftp-master"}{"login"} = "yourdebianusername"; $cfg{"non-us"}{"login"} = "yourdebianusername"; 1;
Angaben zu meiner Person ersetzen Sie natürlich durch ihre eigenen, und lesen
Sie die Manpage für dupload.conf(5)
um die einzelnen Optionen zu
verstehen.
Bauen Sie eine Verbindung zu ihrem Internet-Provider auf, und führen Sie dieses Kommando aus:
dupload --to master gentoo_0.9.12-1_i386.changes
Dupload vergleicht die md5-Prüfsummen mit denen aus der changes-Datei und weisst Sie ggf. an, das Paket neu zu "bauen", wie unter "Bau" des Pakets., Abschnitt 7.1 bereits beschrieben.
Dupload fragt nach ihrem Passwort auf master.debian.org, lädt die Pakete hoch
und schickt eine kurze Info-Mail über ihren Upload an debian-devel-changes@lists.debian.org
,
falls erforderlich.
Wenn Sie in Europa wohnen, dann können Sie auch andere Upload-Stellen anstelle
von Master benutzen. Mehr darüber in dupload(1)
,
dupload.conf(5)
und der "Developer's Reference".
Nehmen wir mal an, es wurde ein Bug-Report(#54321) erstellt wurde, und er beschreibt ein Problem, das Sie lösen können. Um eine neue Revision zu erstellen brauchen Sie folgendes zu tun:
Betrachten wir jetzt eine andere, etwas kompliziertere Situation - eine neue Upstream-Version wurde freigegeben, und Sie wollen sie natürlich gleich übernehmen. Sie können nun folgendes tun:
uupdate -u gentoo-0.9.13.tar.gz
Natürlich ersetzen Sie den Dateinamen mit dem Namen des neuen Source-Tarballs
ihres Programms. uupdate(1)
wird es dann richtig umbennen und
versuchen, alle Änderungen aus ihrer vorherigen .diff.gz-Datei in die neue
Version zu übernehmen. Anschliessend wird debian/changelog aktualisiert.
Übrigens können Sie, vorausgesetzt Sie haben `debian/watch' wie in watch.ex, Abschnitt 6.6 aufgesetzt, durch
Ausführung von uscan(1)
"automagisch" nach aktuellem
Quellcode suchen, herunterladen und "uupdate" durchführen.
Bevor Sie sich dazu entschliessen, ihre Frage irgendwo zu veröffentlichen,
versuchen Sie es doch einfach mal zuerst mit RTFM. Dazu gehört Dokumentation
in /usr/share/doc/dpkg, /usr/share/doc/debian, /usr/share/doc/package/*-Dateien
und die man/info-Seiten für alle Programme, die in diesem Artikel erwähnt
wurden. Wenn Sie ein Bug-Report erhalten (ja, richtige Bug-Reports!), dann
wissen Sie auch, dass es an der Zeit ist, sich näher mit der Fehlerdatenbank
Fehlerdatenbank
zu
beschäftigen, d.h. die Doku dort zu lesen, um mit den Reports effizient
umgehen zu können.
Durch das Beitreten der "Debian Mentors"-Mailing-Liste über debian-mentors@lists.debian.org
kommen Sie in Kontakt mit erfahrenen Debian-Entwicklern, die ihnen mit
potentiellen Fragen helfen können. Sie können die Liste über Mail zu debian-mentors-request@lists.debian.org
abonnieren, mit dem Wort `subscribe' im Betreff der Nachricht.
Wenn Sie dann immer noch Fragen haben, stellen Sie diese auf der "Debian
Developers"-Mailing-Liste über debian-devel@lists.debian.org
.
Sie können die Liste über Mail zu debian-devel-request@lists.debian.org
abonnieren, mit dem Wort `subscribe' im Betreff der Nachricht. Wenn Sie
bereits ein Debian-Entwickler sind, sollten Sie sowieso abonnieren.
Auch wenn alles richtig funktioniert hat, ist es jetzt Zeit für ein Gebet. Warum? Weil in wenigen Stunden (oder Tagen) die Benutzer aus aller Welt ihr Paket benutzen werden - und da Sie irgendwo kritische Fehler gemacht haben, werden Sie von Tausenden von verärgerten Debian-Benutzern zugemailt... Nur ein Scherz. :-)
Entspannen sie Sich und machen Sie sich gefasst auf Bug-Meldungen, da i.d.R. noch viel Arbeit zu erledigen ist, bis alles den "Debian policies" vollständig entspricht (und noch einmal: lesen Sie in der richtigen Doku über Details). Viel Glück!
Anleitung für zukünftige Debian-Maintainer
Version 1.0.2, 10. Juni 2001.joy-mg@debian.org
edi@ka.linux.de