Dieses Dokument versucht, einem typischen Debian-Benutzer und Möchtegern-Entwickler in einer verständlichen Sprache die Technik der Paketerstellung für Debian beizubringen, begleitet von funktionierenden Beispielen. Ein alter Römer hat einmal gesagt: Longum iter est per preaecepta, breve et efficax per exempla! (Es ist ein langer Weg mit Regeln, aber ein kurzer und effizienter mit Beispielen!).
Eines der Dinge, die Debian zu einer hervorragenden Distribution machen, ist das Paket-System. Auch wenn inzwischen massenhaft Linux-Software im Debian-Format vorhanden ist, muss man manchmal auch Software installieren, die es eben nicht als ".deb"-Paket gibt. Sie fragen sich vermutlich, wie man eigene Pakete erstellt und vielleicht meinen Sie, es sei eine komplizierte Aufgabe. Nun, wenn sie ein blutiger Linux-Neuling sind, dann ist es wirklich hart, aber als Anfänger würden Sie dieses Dokument jetzt nicht lesen. :-) Sie sollten schon ein wenig Kenntnisse über die Unix-Programmierung mitbringen, aber Sie brauchen ganz sicher kein Guru zu sein.
Eines ist wohl sicher, um Debian-Pakete richtig zu bauen und zu warten, braucht es Zeit. Um keine Fehler zu machen und damit unser System läuft, muss der Maintainer technisch kompetent sein und fleißig und sorgfältig arbeiten.
Dieses Dokument wird jeden kleinen (möglicherweise auch irrelevanten) Schritt erklären, um Ihnen bei der Erstellung des ersten Paketes zu helfen, und Ihnen etwas Erfahrung zu geben im Erstellen neuer Releases dieses, oder vielleicht später anderer Pakete.
Aktuelle Versionen dieses Dokuments sollten immer über http://www.debian.org/doc/maint-guide/
oder in dem Paket maint-guide-de
zu finden sein.
Bevor Sie loslegen können, müssen Sie sicherstellen, dass einige zusätzliche Pakete richtig installiert sind, die für die Entwicklung benötigt werden. Beachten Sie, dass die Liste keine Pakete enthält, die als `essential' oder `required' markiert sind - denn wir gehen davon aus, dass Sie diese Pakete schon installiert haben.
Dieses Dokument wurde überarbeitet für die Pakete in Debian 2.2 (`potato') und 3.0 (`woody').
Die folgenden Pakete sind in der Standard-Installation von Debian enthalten, also werden Sie sie vermutlich schon haben (und zusätzliche Pakete, von denen sie abhängen). Sie können es dennoch überprüfen, z.B. mit `dpkg -s <package>`.
dpkg-dev
- dieses Paket enthält die Tools, die zum Entpacken,
Erstellen und 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 ist nötig, wenn Ihr Programm, wie viele
andere auch, in der Programmiersprache C geschrieben wurde. (siehe
gcc(1)
) Dieses Paket wird einige andere Pakete in Ihr System
ziehen, wie binutils
, das Programme zum Assemblieren und Linken
der Objekt-Dateien enthält (siehe `info binutils` im Paket
binutils-doc
) und cpp
, den C-Präprozessor. (siehe
cpp(1)
)
g++
- der GNU-C++-Compiler wird benötigt, wenn Ihr Programm in C++
geschrieben wurde. (siehe g++(1)
)
libc6-dev
- die C-Bibliotheken und Header-Dateien, die gcc zum
Linken und Erstellen von Objekt-Dateien benötigt. (siehe `info libc` im
glibc-doc
Paket)
make
- normalerweise 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 sog. `Makefile's automatisieren.
(siehe `info make`)
patch
- ein sehr nützliches Programm, das 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 Unix-ähnlichen Systemen, oft betrachtet als "Unix' Schweizer
Offizierskettensäge". (siehe perl(1)
)
Sie sollten vielleicht auch folgende Pakete installieren:
autoconf
und automake
- Viele neue Programme benutzen
auch configure-Skripte und Makefile-Vorlagen mit Hilfe dieser Programme, also
benötigen Sie diese wahrscheinlich auch. (siehe `info autoconf`, `info
automake`)
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ätere 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)
)
gnupg
- ein Programm, mit dem Sie Pakete digital
signieren können. Dies ist besonders wichtig, wenn Sie das Paket an
andere Leute verteilen wollen und das werden Sie sicher, wenn Ihre Arbeit in
die Debian-Distribution aufgenommen wird. (siehe gpg(1)
)
g77
- der GNU-Fortran77-Compiler wird benötigt, wenn Ihr Programm
in Fortran geschrieben wurde.
gpc
- der GNU-Pascal-Compiler wird benötigt, wenn Ihr Programm in
Pascal geschrieben wurde. Man sollte an dieser Stelle auch
fp-compiler
, den `Free Pascal Compiler` erwähnen, der sich dafür
ebenfalls gut eignet. (siehe gpc(1)
, ppc386(1)
)
imake
und xmkmf
- Programme, die üblicherweise für
X11 erstellt wurden, sie dienen zur Generierung von Makefiles aus einem Satz
von Makro-Funktionen. (siehe imake(1)
, xmkmf(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
)
Es folgen noch sehr wichtige Dokumentationen, die Sie neben diesem Dokument auch lesen sollten:
debian-policy
- die Policy beinhaltet die Beschreibung der
Struktur und des Inhalts eines Archivs, Texte über das Systemdesign, den
Filesystem Hierarchy Standard (der beschreibt, wo jede Datei und jedes
Verzeichnis ein sollte) etc. Das Wichtigste für Sie ist, sie beschreibt die
Anforderungen, die ein Paket erfüllen muss, um in die Distribution aufgenommen
zu werden. (siehe
/usr/share/doc/debian-policy/policy.html/index.html
)
developers-reference
- für alle Fragen, die nicht ausschließlich
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 ins Archiv hochlädt etc. (siehe
/usr/share/doc/developers-reference/developers-reference.html/index.html
)
Die kurzen Erklärungen oben dienen nur der Einführung. Bevor Sie weitermachen, sollten Sie die Dokumentation jedes Programms durchlesen, das Sie verwenden werden, zumindest den normalen Umgang. Das mag Ihnen am Anfang überflüssig vorkommen, aber schon bald werden Sie froh darüber sein, sich schon vorher informiert zu haben.
Anmerkung: Das Paket debmake
enthält einige Programme, die dh-make
in der Funktionalität sehr ähneln. Die Benutzung von debmake wird hier
nicht beschrieben, weil es nicht mehr benutzt werden sollte
(deprecated). Informationen zu debmake finden Sie im Debmake Manual
.
Sie können zwei Arten von Paketen erstellen: Binär- und Quellcode-Pakete. Ein Quell-Paket enthält den Code, aus dem man ein Programm kompilieren kann. Ein Binär-Paket enthält das fertige Programm. Bringen Sie die Begriffe Quellcode und Quell-Paket des Programms nicht durcheinander! Lesen Sie andere Anleitungen, falls die Terminologie nicht klar ist.
In Debian bezeichnet der Ausdruck `Maintainer' eine Person, die Pakete baut, `Upstream Autor' die Person, die das Programm erstellt hat und `Upstream Maintainer' die Person außerhalb von Debian, die zur Zeit das Programm pflegt. Üblicherweise sind `Upstream Autor' und `Upstream Maintainer' die selbe Person, und manchmal ist es sogar der Maintainer selbst. Wenn Sie also ein Programm erstellen und in Debian integriert sehen möchten, dann können Sie sich ruhig als Maintainer bewerben.
Nachdem Sie ein eigenes Paket erstellt haben (oder während Sie gerade dabei sind), möchten Sie vermutlich ein offizieller Debian-Maintainer werden, damit Ihr Paket den Weg in die nächste Distribution findet (wenn das Programm wirklich nützlich ist, warum nicht?). Dieser Prozess ist in der "Developer's Reference" beschrieben; bitte lesen Sie das.
Anleitung für zukünftige Debian-Maintainer
Version 1.2, 06. April 2002.joy-mg@debian.org
mail@erikschanze.de
blade@debian.org