[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ weiter ]
Lassen Sie uns versuchen, Ihr eigenes Paket zu erstellen (oder, noch besser, ein vorhandenes zu übernehmen).
Sie haben sich wahrscheinlich schon ein Paket ausgesucht, das Sie erstellen
wollen. Zuerst müssen Sie überprüfen, ob das Paket bereits in der
Distribution existiert, indem Sie aptitude
benutzen.
Sie können die Paketinformationen auch über die Paket-Suchseite
und
das Debian
Package Tracking System
überprüfen.
Wenn es das Paket schon gibt, na, dann installieren Sie es! :-) Wenn es
aufgegeben (»orphaned«) wurde -- wenn als Betreuer
»Debian QA Group
«
eingetragen ist, dann können Sie es übernehmen, wenn es noch verfügbar ist
(überprüfen Sie den Besitzerstatus unter »Debian Bug report logs: Bugs in package wnpp
in unstable
«). Sie können auch ein Paket adoptieren, für das der
entsprechende Betreuer einen »Request for Adoption« (RFA)
geschrieben hat.
Es gibt verschiedene Listen von aufgegebenen oder zur Übernahme ausgeschriebenen Paketen, die zur Verfügung stehen:
Als wichtige Randbemerkung sei darauf hingewiesen, dass Debian bereits für fast alle Arten von Programmen Pakete enthält und die Anzahl der Pakete im Debian-Archiv wesentlich größer ist als die der Mitwirkenden mit Berechtigung zum Hochladen. Daher werden Beiträge zu Paketen, die bereits im Archiv enthalten sind, von anderen Entwicklern wesentlich mehr gewürdigt (und haben bessere Chancen, gesponsert zu werden) [3]. Sie können dies auf verschiedene Arten tun.
Pakete übernehmen, die aufgegeben wurden, aber aktiv benutzt werden
Mitglied in einem Paketierungs-Team
werden
Fehler von sehr beliebten Paketen sortieren und bewerten
Vorbereiten von QA-
oder NMU-Uploads
Wenn Sie ein Paket übernehmen möchten, laden Sie sich das Quell-Paket herunter (z. B. mit »apt-get source Paketname«) und nehmen Sie es unter die Lupe. Leider enthält dieses Dokument keine umfassende Anleitung zum Übernehmen von Paketen. Der Vorteil ist, dass schon jemand das Paket für Sie vorbereitet hat und Sie keine Schwierigkeiten haben sollten, herauszufinden, wie das Paket funktioniert. Doch lesen Sie weiter, denn viele der folgenden Ratschläge werden auch für Sie nützlich sein.
Wenn das Paket neu ist und Sie es gern in Debian integrieren möchten, gehen Sie wie folgt vor:
Zuerst sollten Sie sicher sein, dass das Programm funktioniert und es bereits einige Zeit ausprobiert haben, damit Sie die Nützlichkeit bestätigen können.
Überprüfen Sie auf der Liste der Pakete in
Arbeit
, dass niemand bereits an diesem Paket arbeitet. Wenn noch
niemand daran arbeitet, schreiben Sie mit reportbug
einen
ITP-Fehlerbericht (»Intent To Package«; Absicht, das Paket zu erstellen) an
das wnpp
-Pseudopaket. Wenn schon jemand an dem Paket arbeitet,
nehmen Sie mit ihm Verbindung auf, wenn es nötig ist. Andernfalls finden Sie
bestimmt ein anderes interessantes Paket, das von niemandem betreut wird.
Das Programm muss eine Lizenz haben.
Für die main-Sektion muss es zu allen Punkten der
Debian-Richtlinien für Freie Software (DFSG) konform sein (siehe
http://www.debian.org/social_contract#guidelines
)
und das Programm darf kein Paket außerhalb von main
benötigen, um kompiliert oder ausgeführt zu werden, wie in den
Debian-Richtlinien gefordert. Dies ist der erwünschte Fall.
Für die contrib-Sektion muss es zu allen Punkten der DFSG konform sein, darf aber ein Paket außerhalb von main für die Kompilierung oder Ausführung erfordern.
Für die non-free-Sektion darf es gegen Punkte der DFSG verstoßen, es muss aber verteilbar sein.
Sind Sie nicht sicher, wohin das Paket gehört, schicken Sie den Lizenztext an
debian-legal@lists.debian.org
und bitten um Rat.
Das Programm sollte sicherlich nicht als »setuid root« laufen, oder noch besser, es sollte für die Ausführung überhaupt keine setuid- oder setgid-Rechte brauchen.
Das Programm sollte kein Daemon sein oder in die Verzeichnisse
*/sbin
installiert werden und auch keinen Port als root öffnen.
Das Programm sollte in einer binären ausführbaren Form erstellt werden, es ist schwieriger, mit Bibliotheken umzugehen.
Das Programm sollte gut dokumentiert und der Quellcode verständlich (d.h. nicht verschleiert) sein.
Sie sollten den oder die Autoren des Programms kontaktieren und sicherstellen, dass sie mit dem Paketieren einverstanden und Debian wohlgesonnen sind. Es ist wichtig, dass man die Autoren auch später über das Programm befragen kann, falls spezifische Probleme bei dem Programm auftreten. Versuchen Sie also nicht, aufgegebene Programme zu packen.
Natürlich sind die aufgeführten Punkte eher Sicherheitsmaßnahmen und sollen
Sie vor tobenden Benutzern schützen, falls ihr setuid-Daemon irgendetwas
Schlimmes anstellt ... Wenn Sie mehr Erfahrungen im Erstellen von Paketen
gesammelt haben, können Sie sich auch an solchen Paketen versuchen, aber
selbst erfahrene Debian-Entwickler fragen schon mal auf der Mailingliste
debian-mentors@lists.debian.org
nach, wenn sie bei irgendetwas unsicher sind. Und die Leute dort helfen gern.
Für weitere Fragen konsultieren Sie die Debian
Entwickler-Referenz
.
Als Erstes müssen Sie die Originalquellen des Programms finden und
herunterladen. Ich nehme an, dass Sie bereits die Quellcode-Dateien von der
Homepage des Autors bezogen haben. Quellen freier Unix-Programme sind
üblicherweise im Format tar
+gzip
mit der Erweiterung
.tar.gz
oder im Format tar
+bzip2
mit der
Erweiterung .tar.bz2
. Sie enthalten üblicherweise ein
Unterverzeichnis, das Programmname-Version
genannt ist sowie alle Quellcode-Dateien darin.
Wenn die neueste Version dieser Quellen über Versionskontrollsysteme wie Git,
Subversion oder CVS verfügbar ist, müssen Sie sie mit »git
clone«, »cvs co« oder »svn co«
herunterladen und dann selbst einen Tarball im Format
tar
+gzip
erstellen, indem Sie die Option
»--exclude-vcs« verwenden.
Kommt der Quellcode in einem anderen Archivtyp daher (beispielsweise wenn der
Dateiname auf .Z
oder .zip
endet[4]), entpacken Sie ihn mit den
entsprechenden Werkzeugen und packen Sie ihn ebenfalls erneut.
Als Beispiel verwende ich hier ein Programm namens gentoo
, einen X
GTK+-Dateimanager.[5]
Erstellen Sie ein Unterverzeichnis in Ihrem Home-Verzeichnis namens
debian
oder deb
oder irgendetwas, das Sie passend
finden (beispielsweise wäre in diesem Fall nur ~/gentoo
völlig
in Ordnung). Kopieren Sie das heruntergeladene Archiv dorthin und entpacken
Sie es (mit »tar xzf gentoo-0.9.12.tar.gz«). Vergewissern Sie
sich, dass es keine Fehler beim Entpacken gab, nicht mal so genannte
irrelevante Fehler, weil es dann höchstwahrscheinlich auf anderen
Systemen Probleme beim Entpacken gibt, denn andere Entpacker ignorieren diese
Anomalien vielleicht nicht. Auf Ihrer Konsole sollten Sie das Folgende sehen.
$ mkdir ~/gentoo ; cd ~/gentoo $ wget http://www.example.org/gentoo-0.9.12.tar.gz $ tar xvzf gentoo-0.9.12.tar.gz $ ls -F gentoo-0.9.12/ gentoo-0.9.12.tar.gz
Jetzt haben Sie ein neues Unterverzeichnis namens gentoo-0.9.12
.
Wechseln Sie dorthin und lesen Sie die mitgelieferte Dokumentation
aufmerksam durch. Meistens gibt es Dateien mit den Namen
README*
, INSTALL*
, *.lsm
oder
*.html
. Sie müssen eine Anleitung finden, wie man das Programm
richtig kompiliert und installiert (meistens wird von einer Installation in
/usr/local/bin
ausgegangen, aber das wollen Sie nicht. Mehr dazu
später in Installation von Dateien in
das Zielverzeichnis, Abschnitt 3.3).
Einfache Programme enthalten eine Makefile
-Datei und können
einfach durch den Aufruf von »make« kompiliert werden. Einige
von ihnen unterstützen »make check«, wodurch die mitgelieferten
Selbstüberprüfungen gestartet werden. Die Installation in das
Zielverzeichnis wird üblicherweise mittels »make install«
durchgeführt.
Versuchen Sie nun, das Programm zu kompilieren und auszuführen. Stellen Sie sicher, dass es einwandfrei funktioniert und nichts anderes während der Installation oder der Ausführung kaputt macht.
Meistens können Sie außerdem »make clean« (oder besser »make distclean«) ausführen, um im Build-Verzeichnis aufzuräumen. Manchmal gibt es sogar ein »make uninstall«, womit alle installierten Dateien gelöscht werden können.
Viele Freie Programme sind in den Sprachen C
oder
C++
geschrieben.
Die meisten von ihnen verwenden Autotools oder CMake, um auf verschiedene
Plattformen portierbar zu sein. Die Werkzeuge werden benutzt, um die Datei
Makefile
und andere benötigte Quelldateien zu erzeugen.
Anschließend werden solche Programme mit dem üblichen »make; make
install« gebaut.
Die Autotools
sind
das GNU-Buildsystem, das aus Autoconf
, Automake
, Libtool
und gettext
besteht.
Sie erkennen solche Quellen an den Dateien configure.ac
,
Makefile.am
und Makefile.in
. [6]
Der erste Schritt im Arbeitsablauf der Autotools ist üblicherweise, dass der ursprüngliche Autor »autoreconf -i -f« in den Quellen aufruft und diese Quellen dann mit den erzeugten Dateien verteilt.
configure.ac-----+-> autoreconf -+-> configure Makefile.am -----+ | +-> Makefile.in src/Makefile.am -+ | +-> src/Makefile.in | +-> config.h.in automake aclocal aclocal.m4 autoheader
Das Bearbeiten der Dateien configure.ac
und
Makefile.am
erfordert etwas Wissen über autoconf
und
automake
. Siehe »info autoconf« und »info
automake«.
Der zweite Schritt im Arbeitsablauf der Autotools ist üblicherweise, dass der
Benutzer diese verteilten Quellen erhält und »./configure &&
make« in den Quellen aufruft, um das Programm zu einer
Binärdatei
zu kompilieren.
Makefile.in -----+ +-> Makefile -----+-> make -> Binärdatei src/Makefile.in -+-> ./configure -+-> src/Makefile -+ config.h.in -----+ +-> config.h -----+ | config.status -+ config.guess --+
Sie können in der Datei Makefile
viele Dinge ändern,
beispielsweise den voreingestellten Installationsort für Dateien, wenn Sie die
Befehlszeilenoption »./configure --prefix=/usr
« benutzen.
Obwohl es nicht erforderlich ist, kann die Aktualisierung der Datei
configure
sowie anderer Dateien durch den Benutzer mittels
»autoreconf -i -f« die Kompatibilität der Quellen verbessern.
CMake
ist ein
alternatives Build-System. Sie erkennen solche Quellen an der Datei
CMakeLists.txt
.
Sie sollten das Paketieren mit einem komplett aufgeräumten (»pristine«, makellosen) Quellcode-Verzeichnis anfangen oder die Quellen einfach frisch entpacken.
Damit das Paket richtig gebaut werden kann, müssen Sie den ursprünglichen
Programmnamen in Kleinbuchstaben umwandeln (falls das nicht schon der Fall
ist). Außerdem sollten Sie das Quellverzeichnis in
Paketname-Version
umbenennen.
Wenn der Programmname aus mehr als einem Wort besteht, ziehen Sie sie zu einem
Wort zusammen oder erstellen eine Abkürzung. Zum Beispiel könnte das Paket
des Programms »John's little editor for X« johnledx
oder
jle4x
genannt werden -- oder was immer Ihnen einfällt, solange es
in einem vernünftigen Rahmen bleibt, beispielsweise 20 Zeichen.
Überprüfen Sie außerdem die exakte Version des Programms (die in der
Paketversion enthalten sein wird). Wenn die Software nicht mit Versionen wie
X.Y.Z nummeriert ist, sondern mit einer Art Datum, können Sie
dieses Datum als Versionsnummer benutzen, solange neuere Versionsnummern
größer sind. Obwohl es am besten ist, dieselbe Versionsnummer zu verwenden,
die der urspüngliche Autor benutzt, kann eine Umwandlung notwendig sein. Wenn
die Version im Format 09Oct23 ist, müssen Sie sie in das Format
YYYYMMDD umwandeln, also 20091023, damit das Programm
dpkg
eine vernünftige Aktualisierung durchführen kann. [7]
Einige Programme haben gar keine Versionsnummerierung. In diesem Fall sollten Sie den ursprünglichen Betreuer kontaktieren, um herauszufinden, ob er eine andere Methode benutzt, die Versionen zuzuordnen.
Lassen Sie uns die Umgebungsvariablen $DEBEMAIL und $DEBFULLNAME in der Bash-Shell setzen, damit viele Debian-Hilfswerkzeuge Ihren Namen und Ihre E-Mail-Adresse für Pakete verwenden können:
$ cat >>~/.bashrc <<EOF DEBEMAIL=ihre.e-mail.adresse@example.org DEBFULLNAME="Vorname Nachname" export DEBEMAIL DEBFULLNAME EOF
Lassen Sie uns das erste Debian-Paket erstellen, indem Sie den Befehl
dh_make
wie folgt aufrufen.
$ . ~/.bashrc $ cd ~/gentoo/gentoo-0.9.12 $ dh_make -f ../gentoo-0.9.12.tar.gz
Natürlich ersetzen Sie den Dateinamen mit dem Namen Ihres originalen
Quellcode-Archivs. [8] Siehe
dh_make(1)
für Details.
Es werden einige Informationen angezeigt. Sie werden gefragt, welche Art Paket
Sie erstellen wollen. Gentoo ist ein »single binary package« - es wird nur
eine Binärdatei und deshalb eine .deb
-Datei erstellt, also
wählen Sie die erste Option mit der »s«-Taste, überprüfen
nochmal die Informationen auf dem Bildschirm und bestätigen mit
»ENTER«. [9]
Nach diesem Aufruf von dh_make
wird eine Kopie des ursprünglichen
Tarballs mit dem Namen gentoo_0.9.12.orig.tar.gz
im
übergeordneten Verzeichnis angelegt, um später ein nichtnatives
Debian-Quellpaket mit der Datei debian.tar.gz
erstellen zu
können.
$ cd ~/gentoo ; ls -F gentoo-0.9.12/ gentoo-0.9.12.tar.gz gentoo_0.9.12.orig.tar.gz
Bitte beachten Sie zwei entscheidende Merkmale in dem Dateinamen
gentoo_0.9.12.orig.tar.gz
:
Paketname und Version sind durch »_« (Unterstrich) getrennt.
Es steht .orig
vor .tar.gz
.
Beachten Sie außerdem, dass viele Schablonendateien im Quellverzeichnis im
Unterverzeichnis debian
erstellt werden. Diese werden in Benötigte Dateien im Verzeichnis debian
,
Kapitel 4 und Andere Dateien unter debian/,
Kapitel 5 erklärt. Weiterhin sollte Ihnen klar sein, dass das Paketieren
kein automatischer Prozess ist. Sie müssen die ursprünglichen Quellen für
Debian verändern, wie in Den Quellcode verändern,
Kapitel 3 beschrieben. Nach all diesen Schritten müssen Sie die
Debian-Pakete bauen, wie in "Bau" des
Pakets, Kapitel 6 beschrieben, müssen sie überprüfen wie in Überprüfung des Pakets auf Fehler, Kapitel 7
beschrieben und zuletzt hochladen, wie in Hochladen
des Pakets, Kapitel 8 beschrieben. Ich werde alle diese Schritte
erläutern.
Um es noch einmal deutlich zu machen, als neuer Betreuer wird Ihnen davon abgeraten, komplizierte Pakete zu bauen, beispielsweise:
Mehrere Binärpakete (»multiple binary packages«),
Bibliotheken (»libraries«),
Kernelmodul-Pakete,
Kernelpatch-Pakete,
Wenn das Dateiformat der Quellen weder tar.gz
noch
tar.bz2
ist oder
Der Quell-Tarball nicht verteilbaren Inhalt hat.
Es ist nicht allzu schwierig, erfordert aber etwas mehr Wissen. Deswegen wird hier nicht näher darauf eingegangen.
Wenn Sie versehentlich einige der Schablonendateien gelöscht haben, während
Sie sie bearbeitet haben, können Sie diese wiederherstellen, indem Sie erneut
dh_make
mit der Option --addmissing in einem
Debian-Quellverzeichnis aufrufen.
Das Aktualisieren eines existierenden Pakets kann kompliziert werden, weil es eventuell ältere Techniken verwendet. Bitte bleiben Sie für's Erste bei aktuellen Paketierungen, um die Grundlagen zu lernen. Ich werde später in Weiterentwicklung des Pakets, Kapitel 9 darauf zurückkommen und dies erklären.
[ zurück ] [ Inhalt ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ weiter ]
Anleitung für zukünftige Debian-Betreuer
Diese Übersetzung wird derzeit aktualisiert. Teile beruhen auf Version 1.2.3 vom 18. Januar 2005, die aktuelle Version ist 1.2.25, 2010-12-22 12:44:34 UTCjoy-mg@debian.org
toddy@debian.org
mail@erikschanze.de
blade@debian.org