Wenn Sie ein komplett neues Debian Paket erzeugen wollen, sei es weil zu
den Sourcen noch kein Paket vorhanden ist oder weil Sie selber eine Software
entwickelt haben, die Sie als Debian Paket zur Verfügung stellen wollen, so
stehen Ihnen auch dafür unter Debian einige Hilfsmittel zur Verfügung.
Zunächst sollten Sie sich die Sourcen des gewünschten Paketes besorgen
und ein Unterverzeichnis für das neue Projekt erzeugen. Am Beispiel des Programmes
dtcltiny, einem Client zur Steuerung von digitalen
Modellbahnen, sollen die einzelnen Schritte vorgestellt werden. Die Sourcen
diese Programmes finden Sie unter http://www.markus-pfeiffer.de.
Natürlich können Sie
auch ein beliebiges anderes Programm benutzen von dem Sie ein Debian Paket
erzeugen möchten. Sie müssen dann aber
ggf. an einigen Stellen etwas Kreativität einsetzen, da die hier gezeigten
Beispiele sich nicht 1:1 übertragen lassen. Es ist überigens nicht zwingend
notwendig das die Sourcen zu einem Programm verfügbar sind. Natürlich können
Sie auch Debian Pakete von Programmen im Binärformat erstellen oder auch
Dokumentation, beispielsweise im PDF Format, zu einem Paket packen.
Wechseln Sie nun in das Unterverzeichnis und entpacken Sie die Sourcen
des Programmes:
fr@debian:~/Daten/debian-pakete$ mkdir dtcltiny
fr@debian:~/Daten/debian-pakete$ cd dtcltiny
fr@debian:~/Daten/debian-pakete/dtcltiny$ tar xvfz ../../../dtcltiny-0.3.4.tgz
dtcltiny-0.3.4/
dtcltiny-0.3.4/Makefile.am
dtcltiny-0.3.4/acinclude.m4
dtcltiny-0.3.4/Makefile.dist
...
dtcltiny-0.3.4/dtcltiny/InfoPort.moc.o
dtcltiny-0.3.4/dtcltiny/.libs/
dtcltiny-0.3.4/configure
dtcltiny-0.3.4/stamp-h
|
Wichtig ist hierbei, dass das entstehende Unterverzeichnis schon aus dem
Programmnamen und der Versionsnummer besteht. Sollte dies nicht so sein, muß das
Verzeichnis entsprechend umbenannt werden. Im nächsten Schritt ist in das
Verzeichnis zu wechseln und das Programm dh_make
aufzurufen.
fr@debian:~/Daten/debian-pakete/dtcltiny$ cd dtcltiny-0.3.4/
fr@debian:~/Daten/debian-pakete/dtcltiny/dtcltiny-0.3.4$ dh_make
Type of package: single binary, multiple binary, or library? [s/m/l] s
Maintainer name : Frank Ronneburg
Email-Address : fr@unknown
Date : Tue, 13 Nov 2001 21:56:17 +0100
Package Name : dtcltiny
Version : 0.3.4
Type of Package : Single
Hit <enter> to confirm:
Done. Please edit the files in the debian/ subdirectory now. dtcltiny
uses a configure script, so you probably don't have to edit the Makefiles.
|
dh_make erzeugt ein Unterverzeichnis,
debian/ in dem sich Vorlagen für alle notwendigen Dateien
zur Erzeugung eines Debian Paketes befinden. dh_make
bietet die Möglichkeit verschiedene Pakettypen zu erzeugen, für ein einfaches
Paket wie in diesem Beispiel ist „single binary“ die richtige
Wahl. Abschliessend wird noch der Hinweis ausgegeben, dass sich im
Unterverzeichnis debian/ einige Dateien befinden, auf die
nochmal ein Blick geworfen werden sollte. Weiterhin wird darauf hingewiesen,
dass in den Sourcen von dtcltiny ein
configure Script enthalten ist und somit Änderungen am
Makefile wahrscheinlich unnötig sind. Neben dem
Verzeichnis debian/ wurde im darüber liegenden Verzeichnis
noch eine Kopie des gesamten Verzeichnisbaumes angelegt. Dieser wurde um die
Endung .orig ergänzt.
Bei genauer Betrachtung des Beispiels ist vielleicht aufgefallen, dass die
E-Mail Adressen nicht korrekt erkannt wurde, ein nettes Beispiel also, so
kommen wir nicht um einen Blick ins Verzeichnis debian/
herum ;-).
Die Datei control enthält verschiedenste Angaben zu
dem Paket. Wichtig ist hier die Zeile Section:, dies
ist der Bereich, in dem das Paket in der Debian Paketstruktur erscheint. Die
Zeile Description: enthält in einer Zeile eine kurze
Beschreibung des Paketes. Alle weiteren Zeilen müssen mit einem Leerzeichen
beginnen und beschreiben das Paket ausführlich. Auch diese Texte sollten in
englischer Sprache verfasst werden (das hier gezeigte Beispiel spiegelt
lediglich den Zeitmangel des Autors wider...).
Source: dtcltiny
Section: x11
Priority: optional
Maintainer: Frank Ronneburg <fr@openoffice.de>
Build-Depends: debhelper (>> 3.0.0)
Standards-Version: 3.5.2
Package: dtcltiny
Architecture: any
Depends: ${shlibs:Depends}
Description: Control Locomotives on a Model Railroad, needs SRCP Server (eg. erddcd)
dtcltiny ist ein Programm, mit dem man Loks auf einer Modellbahn steuern kann,
die mit einem Digitaldecoder ausgerüstet sind. Es stellt für jede Lok einen
Regler zur Verfügung, mit dem man die Geschwindigkeit, Fahrtrichtung und
Sonderfunktionen einstellen kann. Nebenbei bietet es noch die Möglichkeit,
Decoder nach dem NMRA-DCC Standard und Uhlenbrock-Decoder zu Programmieren.
|
Die meisten der verwendeten Schlüsselwörter sollten selbsterklärend sein.
Source: beschreibt den Namen der Sourcen des Paketes, mit
Priority: kann bestimmt werden ob auf das Paket verzichtet
werden kann (optional) oder ob das Paket zwingend
notwendig für das System ist. Die Zeile Maintainer:
enthält den Namen und die E-Mail Adresse des Paketbetreuers, diese Angaben sind
in der gezeigten Schreibweise anzugeben. Build-Depends:
beschreibt die Abhängigkeiten des Paketes. Mit dem Schlüsselwort
Package: wird der Paketname des Binärpaketes beschrieben,
die folgende Zeile Architecture: bezeichnet für welche
Architekturen das Paket verwendet werden kann. Die kann beispielsweise
i386, powerpc,
alpha usw. sein, oder wie hier gezeigt das Schlüsselwort
any für alle Architekturen.
Nachdem die Vorbereitungen an den Dateien im Verzeichnis
debian/ abgeschlossen sind, kann mit dem Programm
dpkg-buildpackage das Paket erstellt werden.
dpkg-buildpackage wird ohne weitere Parameter
versuchen die Sourcen und die Changes Datei des Paketes digital zu signieren.
Hierzu wird ein vorhandener GnuPG Key benutzt. Ist kein solcher Key erzeugt
worden, so kann das signieren mit den Optionen -us
(unsigned source) und -uc (unsigned changes) verhindert
werden. Im einfachsten Fall genügt also das Kommando
dpkg-buildpackage -us -uc (als „root“) um das
Paket zu erzeugen.
dpkg-buildpackage verfügt natürlich noch über viele
weitere Optionen
debian:~# dpkg-buildpackage --help
dpkg-buildpackage: unknown option or argument --help
Debian dpkg-buildpackage .
Copyright (C) 1996 Ian Jackson.
Copyright (C) 2000 Wichert Akkerman
This is free software; see the GNU General Public Licence version 2
or later for copying conditions. There is NO warranty.
Usage: dpkg-buildpackage [options]
Options: -r<gain-root-command>
-p<sign-command>
-d do not check build dependencies and conflicts
-D check build dependencies and conflicts
-k<keyid> the key to use for signing
-sgpg the sign-command is called like GPG
-spgp the sign-command is called like PGP
-us unsigned source
-uc unsigned changes
-a<arch> Debian architecture we build for (implies -d)
-b binary-only, do not build source } also passed to
-B binary-only, no arch-indep files } dpkg-genchanges
-S source only, no binary files }
-t<system> set GNU system type } passed to dpkg-architecture
-v<version> changes since version <version> }
-m<maint> maintainer for package is <maint> }
-e<maint> maintainer for release is <maint> } only passed
-C<descfile> changes are described in <descfile> } to dpkg-
-si (default) src includes orig for rev. 0 or 1 } genchanges
-sa uploaded src always includes orig }
-sd uploaded src is diff and .dsc only }
-nc do not clean source tree (implies -b)
-tc clean source tree when finished
-ap add pause before starting signature process
-h print this message
-W Turn certain errors into warnings. } passed to
-E When -W is turned on, -E turned it off. } dpkg-source
-i[<regex>] ignore diffs of files matching regex } only passed
to dpkg-source |
dpkg-buildpackage benötigt eine Umgebung die der
späteren Installationsumgebung ähnlich ist. Das Paket kann als Superuser (root)
erzeugt werden um dies zu gewährleisten. Nun macht es wenig Sinn
einen GnuPG-Key für den Superuser zu erzeugen. Um dieses Problem zu umgehen,
dient die Option -r, direkt gefolgt von einem Kommando,
welches es Benutzer erlaubt, Kommandos als Superuser auszuführen bzw. eine
virtuelle root-Umgebung schafft. Dies kann
beispielsweise das Kommando fakeroot oder
sudo sein, ggf. ist natürlich
die Konfiguration des Programmes (sudo) für diesen Benutzer anzupassen.
Viele der weiteren Optionen können und sollten in den
Konfigurationsdateien im Verzeichnis debian/ definiert
werden, bei Bedarf können diese aber auch auf der Kommandozeile angepasst
werden.