Kurze Anleitung für die Paketerstellung unter Debian:
1. Um ein Paket zu bauen braucht man den SourceCode des zu debianisierenden
Programms und ein paar Programme die zur Paketerstellung benötigt werden.
(siehe Anhang: Benötigte Programme)
2. Der Quelltext muss in ein Verzeichnis entpackt oder kopiert werden welches, durch
Debian vorgeschrieben, folgendermassen aussieht: "Programmname-Versionsnummer".
3. Wenn dies getan ist gibt man in der Shell (im Verzeichnis: "Programmname-Versionsnummer")
den Befehl: dh_make ein. Durch diesen Befehl wird ein Unterverzeichnis ("/debian")
erzeugt, welches Vorlagen der Dateien enthält, die zum Paketbau benötigt werden.
(siehe Anhang: Das debian-Unterverzeichnis)
4. Diese Dateien (rules, copyright, changelog, control, dirs, menu...) sind
entsprechend des jeweiligen Pakets anzupassen. Die wichtigste Datei ist
hierbei das rules-File, welches eine Art Makefile ist, welches direkt auf
das Makefile des Programms und damit auf die Kompilieranweisungen... zugreift
bzw. zugreifen kann.
D.h.: für jedes DebianPaket und somit für jedes zu debianisierende
Programm sind eigene, programmspezifische Dateien nötig.
5. Wenn die Dateien modifiziert sind, im Verzeichnis: "Programmname-Versionsnummer"
den Befehl: dpkg-buildpackage in der Shell eingeben und der Paketbau beginnt.
(genauere Anleitung: siehe: Debian-New-Maintainers-Guide)
Anhang:
* Das debian-Unterverzeichnis
Alle zur Erstellung des Debian-Pakets notwendigen Dateien befinden sich im debian-
Unterverzeichnis(optionale Dateien enden auf ".ex", bei Gebrauch umbennen(".ex" entfernen)).
README.Debian: README-Datei die später im /usr/share/doc/.. Verzeichnis abgelegt wird.
Hier sollten Debian-spezifische Anpassungen oder Kompilierungsoptionen
oder Abweichungen von der upstream-Version dokumentiert werden.
changelog: Enthält die Änderungshistory des Debian-Pakets. Achtung die Datei muß in
einem speziellen Format vorliegen.
conffiles.ex: Enthält eine Liste von Konfigurationsdateien, die dpkg beachten sollten.
control: Enthält die Informationen, die mit dpkg --info ausgegeben werden können.
Hier muß auch die Beschreibung des Pakets angepasst werden.
copyright: Hier sollte die Website oder ftp-URL angegeben werden, von wo das Orginal-
Paket bezogen werden kann. Autoren und weitere upstream Copyright-
Hinweise müssen hier eingetragen werden.
cron.d.ex: Beispiel-crontab (optional)
dirs: Enthält die Verzeichnisse, die bei Bedarf von dpkg während der Installation
erzeugt werden sollen. Im einfachsten Fall muß hier nichts geändert werden,
oder einfach nur das Installationsverzeichnis eingetragen werden (z.B. /usr/
bin).
docs: Liste von Dateien, die aus den Orginalquellen nach /usr/share/doc/paket
übernommen werden sollen.
emacsen-install.ex: Emacs-spezifisch (optional)
emacsen-remove.ex: Emacs-spezifisch (optional)
emacsen-startup.ex: Emacs-spezifisch (optional)
ex.doc-base.package: Für Pakete mit eigener HTML-Dokumentation. Wird benötigt, um die Paket-
Dokumentation bei doc-base zu registrieren (damit sie mittels dhelp(1) oder
dwww(1) gefunden werden kann). (optional)
init.d.ex: Für Pakete die einen Daemon enthalten und von init gestartet werden sollten
(Initskript). (optional)
manpage.1.ex: Skellet einer Manpage (troff(1)). (optional)
manpage.sgml.ex: Skellet einer Manpage im SGML-Format (Docboc). (optional)
menu.ex: Einstellungen für das Debian-Menu system. Ermoeglich es auf einfach Art
einen Menüeintrag für das Paket zu erstellen, der dann in allen X11-
Umgebungen sichtbar ist.
postinst.ex: Skript, das nach der Installation ausgeführt werden soll
postrm.ex: Skript, das nach dem Entfernen des Pakets ausgeführt werden soll.
preinst.ex: Skript, das vor der Installation ausgeführt werden soll.
prerm.ex: Sript, das vor dem Entfernen ausgeführt werden soll.
rules: Enthält die Regeln die dpkg-buildpackage auswertet, um das Paket zu
erstellen.
watch.ex: Siehe uscan(1) und uupdate(1). (optional)
* Benötigte Programme
binutils diese Programme werden zum Assemblieren und Linken der Objekt-Dateien
benötigt - den Stoff, aus dem die Programme sind. (siehe `info binutils')
cpp der C-Präprozessor. (siehe cpp(1))
cpio das ist ein Archivierungsprogramm wie tar oder zip. (siehe cpio(1))
dpkg-dev dieses Paket enthält die Tools, die zum Entpacken, Erstellen und dem Hochladen
der Quell-Pakete benötigt werden. (siehe dpkg-source(1))
file dieses handliche Programm kann den Typ einer Datei feststellen. (siehe file(1))
gcc der GNU-C-Compiler. Die meisten Linux-Programme sind in C geschrieben. Ist ihr
Programm in einer anderen Sprache geschrieben, z.B. C++, Fortran, Pascal,
sollten Sie g++, g77, gpc oder einen anderen benötigten Compiler installieren.
(siehe gcc(1), g++(1), g77(1), gpc(1))
libc6-dev die C-Bibliotheken und Header-Dateien, die gcc zum Linken und Erstellen von
Objekt-Dateien benötigt. Auch wenn einige Programme immer noch libc5 empfehlen/
benutzen, sollten Sie die neuere Version verwenden (libc6). (siehe `info libc')
make normallerweise wird ein Programm in mehreren Schritten erstellt. Statt wieder und
wieder die selben Befehle zu tippen, können Sie das Ganze mit Hilfe dieses Programms und
der sogenannten `Makefile's automatisieren. Einige Programme verwenden auch imake und
xmkmf, beides Programme die zur Generierung von Makefile aus einem Satz von Makro-
Funktionen dienen. Viele neue Programme benutzen auch configure-Skripte und Makefile-
Vorlage mit Hilfe der Programm wie autoconf und automake, also benötigen Sie diese
wahrscheinlich auch. (siehe `info make`, imake(1), xmkmf(1), autoconf(1),automake(1))
patch ein sehr nützliches Programm, dass eine sog. diff-Datei, eine Auflistung der
Unterschiede im Dateiinhalt (produziert mit dem Programm "diff"), auf die ursprüngliche
Datei anwendet und daraus die neue Version erzeugt. (siehe patch(1))
perl5 Perl ist eine der am meisten gebrauchten Skript-Sprachen auf heutigen Un*x-
Systemen, oft betrachtet als "Unix' Schweizer Offizierskettensäge". (siehe perl(1))
dh-make und debhelper dh-make wird benötigt, um eine Vorlage des Beispiel-Pakets zu
erstellen, und es benötigt einige debhelper-Tools für die Paketerstellung. Sie sind nicht
zwingend erforderlich, aber für neue Maintainer sehr empfohlen. Es vereinfacht den ersten
Einstieg sehr, ebenso die später
Kontrolle. (siehe dh_make(1),
debhelper(1), /usr/share/
doc/debhelper/README)
devscripts dieses Paket enthält einige nützliche Skripte, die für die Maintainer oft sehr
hilfreich sein können, aber nicht unbedingt zum Bauen der Pakete benötigt werden. (siehe /usr/
share/doc/devscripts/README.gz)
fakeroot dieses Utility ermöglicht ihnen, die Identität des "root"s vorzutäuschen, was für
einige Teile des Build-Prozesses benötigt wird. (siehe fakeroot(1))
lintian das ist Debians Paket-Prüfer, der sie über die üblichen Fehler nach der
Paketerstellung
informiert und die gefundenen Fehler erklärt. (siehe
lintian(1), /usr/share/
doc/lintian/lintian.html/index.html)
debian-policy beinhaltet die Beschreibung der Struktur und des Inhalts eines Archives, Texte
über das Systemdesign, den Filesystem Hierarchy Standard, und das wichtigste (für Sie), es
beschreibt die Anforderungen, die ein Paket erfüllen muss, um in eine Distribution
aufgenommen zu werden. (siehe /usr/share/doc/debian-policy/policy.html/index.html)
developers-reference für alle Fragen, die nicht ausschliesslich technischer Natur der
Paketerstellung sind, z.B. über die Struktur des Archivs, wie man Pakete umbenennt, aufgibt,
übernimmt, NMUs
durchführt, Fehler verwaltet, wie und wo die Archive hochlädt
usw. (siehe
/
usr/share/doc/developers-reference/developers-reference.html/index.html)
* Wert Section der control Datei:
bestimmt die Sektion der Distribution, in die das Paket gehört.
Debian ist in Sektionen aufgeteilt ist: main (die Freie Software), non-free (nicht wirklich
freie Software) und contrib (Freie Software, die von non-free-Sachen abhängt). Unterhalb dieser
Sektionen existieren logische Untersektionen, die eine minimale Beschreibung des Pakets geben. D.h.
die `admin'-Sektion enthält Programme für Administration, `base' die grundlegenden Pakete, `devel'
die Pakete für die Programmierer, `doc' die Dokumentation, `libs' die Programmbibliotheken, `mail'
die E-Mail-Reader und -Daemonen, `net' die Netzwerk-Anwendungen und Daemonen, `x11'-Sektion
die X11-spezifischen Programme, usw.