Scroll to navigation

DEBUILD(1) General Commands Manual DEBUILD(1)

BEZEICHNUNG

debuild - baut ein Debian-Paket

ÜBERSICHT

debuild [Debuild-Optionen] [Dpkg-Buildpackage-Optionen] [--lintian-opts Lintian-Optionen]
debuild [Debuild-Optionen] -- binary|binary-arch|binary-indep|clean

BESCHREIBUNG

debuild creates all the files necessary for uploading a Debian package. It first runs dpkg-buildpackage, then runs lintian on the .changes file created (assuming that lintian is installed), and finally signs the appropriate files (using debsign(1) to do this instead of dpkg-buildpackage(1) itself; all relevant key-signing options are passed on). Signing will be skipped if the distribution is UNRELEASED, unless dpkg-buildpackage's --force-sign option is used. Parameters can be passed to dpkg-buildpackage and lintian, where the parameters to the latter are indicated with the --lintian-opts option. The allowable options in this case are --lintian and --no-lintian to force or skip the lintian step, respectively. The default is to run lintian. There are also various options available for setting and preserving environment variables, as described below in the Environment Variables section. In this method of running debuild, we also save a build log to the file ../<package>_<version>_<arch>.build.

Eine alternative Möglichkeit, debuild zu benutzen, besteht darin, einen oder mehrere der Parameter binary, binary-arch, binary-indep und clean zu verwenden. In diesem Fall wird debuild versuchen, Root-Rechte zu bekommen und dann debian/rules mit den angegebenen Parametern auszuführen. Um Root-Rechte zu bekommen, kann eine der Optionen --rootcmd=Befehl_um_Root_zu_werden oder -rBefehl_um_Root_zu_werden benutzt werden. Befehl_um_Root_zu_werden ist wahrscheinlich entweder fakeroot, sudo oder super. Eine weitere Erörterung dieses Punkts finden Sie nachfolgend. Wieder können die Optionen zum Erhalten der Umgebung verwendet werden. In diesem Fall wird debuild außerdem versuchen, zuerst dpkg-checkbuilddeps auszuführen; dies kann explizit mittels der Optionen -D beziehungsweise -d angefordert oder abgeschaltet werden. Beachten Sie außerdem, dass wenn entweder eine dieser beiden oder eine -r-Option in der Konfigurationsdateioption DEBUILD_DPKG_BUILDPACKAGE_OPTS angegeben wurde, dies dann sogar in dieser Aufrufmethode von debuild erkannt wird.

debuild liest außerdem, wie nachfolgend beschrieben, die devscripts-Konfigurationsdateien. Dies ermöglicht die Angabe von Standardoptionen.

Prüfung von Verzeichnisnamen

Ebenso wie mehrere andere Skripte im Paket devscripts wird debuild den Verzeichnisbaum emporsteigen, bis es eine debian/changelog-Datei findet. Als eine Schutzmaßnahme gegen verirrte Dateien, die potenziell Probleme bereiten, wird es den Namen des übergeordneten Verzeichnisses untersuchen, sobald es eine debian/changelog-Datei findet und prüfen, ob der Verzeichnisname dem Paketnamen entspricht. Wie dies genau geschieht, wird durch die beiden Konfigurationsdateivariablen DEVSCRIPTS_CHECK_DIRNAME_LEVEL und DEVSCRIPTS_CHECK_DIRNAME_REGEX sowie ihre entsprechenden Befehlszeilenoptionen --check-dirname-level und --check-dirname-regex geregelt.

DEVSCRIPTS_CHECK_DIRNAME_LEVEL kann die folgenden Werte annehmen:

0
prüft den Verzeichnisnamen nie.
1
prüft den Verzeichnisnamen nur, falls in der Suche nach debian/changelog das Verzeichnis gewechselt werden muss. Dies ist das Standardverhalten.
2
prüft den Verzeichnisnamen immer.

Der Verzeichnisname wird geprüft, indem getestet wird, ob der aktuelle Verzeichnisname (wie er durch pwd(1) bestimmt wurde) zum regulären Ausdruck passt, der durch die Konfigurationsdateioption DEVSCRIPTS_CHECK_DIRNAME_REGEX oder die Befehlszeilenoption --check-dirname-regex regulärer_Ausdruck angegeben wurde. Hierbei ist regulärer_Ausdruck ein regulärer Perl-Ausdruck (siehe perlre(3perl)), der an den Anfang und das Ende verankert wird. Falls regulärer_Ausdruck ein »/« enthält, muss er auf den vollständigen Verzeichnispfad passen. Wenn nicht, dann muss er auf den vollständigen Verzeichnisnamen passen. Falls regulärer_Ausdruck die Zeichenkette »PACKAGE« beinhaltet, wird diese durch den Namen des Quellpakets ersetzt, wie er aus dem Changelog bestimmt wird. Der vorgegebene Wert für den regulären Ausdruck ist: »PACKAGE(-.+)?«, daher entspricht er Verzeichnisnamen wie PACKAGE und PACKAGE-Version.

UMGEBUNGSVARIABLEN

As environment variables can affect the building of a package, often unintentionally, debuild sanitises the environment by removing all environment variables except for TERM, HOME, LOGNAME, GNUPGHOME, PGPPATH, GPG_AGENT_INFO, GPG_TTY, DBUS_SESSION_BUS_ADDRESS, FAKEROOTKEY, DEBEMAIL, DEB_*, the (C, CPP, CXX, LD and F)FLAGS variables and their _APPEND counterparts and the locale variables LANG and LC_*. TERM is set to `dumb' if it is unset, and PATH is set to "/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11".

Falls erforderlich ist, dass eine bestimmte Umgebungsvariable unverändert an den Bauprozess durchgeleitet wird, kann dies mittels einer --preserve-envvar-Umgebungsvariablen angegeben werden (dies kann auch als Option -e Umgebungsvariable geschrieben werden). Die Umgebung kann mittels der Option --preserve-env unverändert belassen werden. PATH wird jedoch sogar in diesem Fall auf den oben beschriebenen vernünftigen Wert gesetzt. Die einzige Möglichkeit, PATH vor dem Zurücksetzen zu bewahren, besteht darin, eine --preserve-envvar PATH-Option anzugeben. Seien Sie aber gewarnt, dass die Benutzung von Programmen, die an Nichtstandardorten liegen, leicht dazu führen kann, dass das Paket beschädigt ist, da es nicht auf Standardsystemen gebaut werden kann.

Beachten Sie, dass Verzeichnisse mittels der Option --prepend-path an den Anfang des zurückgesetzten PATH hinzugefügt werden können. Dies ist nützlich, wenn zum Bauen die Verwendung von Werkzeugen wie ccache oder distcc gewünscht wird.

Es ist außerdem möglich, zu verhindern, dass etwas wie FOO=bar debuild -e FOO durch Schreiben von debuild -e FOO=bar oder der Langform debuild --set-envvar FOO=bar getippt werden muss.

SUPERUSER-ANFORDERUNGEN

debuild muss als Superuser ausgeführt werden, um ordnungsgemäß zu funktionieren. Es gibt grundlegend verschiedene Arten, dies zu erreichen. Die erste und bevorzugte Methode besteht in der Benutzung eines Befehls, um Root-Rechte zu erlangen. Es ist wahrscheinlich am besten, fakeroot(1) zu verwenden, da es nicht das Gewähren echter Rechte beinhaltet. super(1) und sudo(1) sind weitere Möglichkeiten. Falls keine -r-Option (oder --rootcmd) angegeben wurde (und erinnern Sie sich daran, dass dpkg-buildpackage eine -r-Option ebenfalls akzeptiert) und keine der folgenden Methoden benutzt wird, dann wird stillschweigend von -rfakeroot ausgegangen.

Die zweite Methode besteht darin, etwas wie su(1) zu verwenden, um Root zu werden, und dann alles als Root zu tun. Beachten Sie jedoch, dass lintian abbrechen wird, falls es als Root oder Setuid-Root ausgeführt wird; dies kann mittels der Option --allow-root von lintian verhindert werden, falls Sie wissen, was Sie tun.

Die dritte mögliche Methode ist, dass debuild als Setuid-Root installiert wurde. Dies ist nicht die Standardmethode und wird dergestalt vom Systemadministrator installiert werden müssen. Es muss außerdem erkannt werden, dass jedermann, der debuild als Root oder Setuid-Root ausführt, vollen Zugriff auf den ganzen Rechner hat. Diese Methode wird daher nicht empfohlen, wird aber funktionieren. debuild könnte mit den Rechten 4754 installiert werden, so dass es nur Mitglieder der besitzenden Gruppe ausführen können. Ein Nachteil dieser Methode wäre, dass andere Benutzer nicht in der Lage wären, dieses Programm zu verwenden. Es gibt viele andere Varianten dieser Option unter Einbeziehung mehrerer Kopien von debuild oder der Verwendung von Programmen wie sudo oder super, um ausgewählten Anwendern Root-Rechte zu gewähren. Falls der Systemadministrator dies tun möchte, sollte er das Programm dpkg-statoverride benutzen, um die Rechte von /usr/bin/debuild zu ändern. Dies wird sicherstellen, dass diese Rechte über Upgrades hinweg erhalten werden.

HOOKS

debuild supports a number of hooks when running dpkg-buildpackage. Note that the hooks dpkg-buildpackage to lintian (inclusive) are passed through to dpkg-buildpackage using its corresponding --hook-name option. The available hooks are as follows:
dpkg-buildpackage-hook
wird ausgeführt bevor dpkg-buildpackage beginnt, indem dpkg-checkbuilddeps aufgerufen wird.
Hook is run inside the unpacked source.
Corresponds to dpkg's init hook.
clean-hook
wird ausgeführt, bevor dpkg-buildpackage debian/rules clean ausführt, um den Quellverzeichnisbaum zu bereinigen (wird sogar ausgeführt, falls der Verzeichnisbaum nicht bereinigt wird, da -nc verwendet wird).
Hook is run inside the unpacked source.
Corresponds to dpkg's preclean hook.
dpkg-source-hook
wird nach dem Bereinigen des Verzeichnisbaums und vor dem Ausführen von dpkg-source ausgeführt (wird sogar ausgeführt, falls dpkg-source nicht aufgerufen wird, da -b, -B oder -A benutzt wird).
Hook is run inside the unpacked source.
Corresponds to dpkg's source hook.
dpkg-build-hook
wird nach dpkg-source und vor dem Aufruf von debian/rules build ausgeführt (wird sogar ausgeführt, falls es sich um das Bauen eines reinen Quellpakets handelt, wodurch debian/rules build nicht aufgerufen wird).
Hook is run inside the unpacked source.
Corresponds to dpkg's build hook.
dpkg-binary-hook
wird zwischen debian/rules build und debian/rules binary(-arch) ausgeführt. Läuft nur, falls ein Binärpaket gebaut wird.
Hook is run inside the unpacked source.
Corresponds to dpkg's binary hook.
dpkg-genchanges-hook
wird nach dem Bau eines Binärpakets und vor dem Aufruf von dpkg-genchanges ausgeführt.
Hook is run inside the unpacked source.
Corresponds to dpkg's changes hook.
final-clean-hook
wird nach dpkg-genchanges und vor dem abschließenden debian/rules clean ausgeführt (wird sogar ausgeführt, falls der Verzeichnisbaum nach dem Baunicht bereinigt wird, was Standard ist).
Hook is run inside the unpacked source.
Corresponds to dpkg's postclean hook.
lintian-hook
wird (einmal) vor dem Aufruf von lintian ausgeführt (wird sogar dann ausgeführt, wenn lintian nicht aufgerufen wird).
Hook is run from parent directory of unpacked source.
Corresponds to dpkg's check hook.
signing-hook
wird nach dem Aufruf von lintian, bevor irgendwelche Signierung erfolgt, ausgeführt (wird sogar dann ausgeführt, wenn nichts signiert wird).
Hook is run from parent directory of unpacked source.
Corresponds to dpkg's sign hook, but is run by debuild.
post-dpkg-buildpackage-hook
wird ausgeführt, nachdem alles beendet ist.
Hook is run from parent directory of unpacked source.
Corresponds to dpkg's done hook, but is run by debuild.

Ein Hook-Befehl kann entweder in der Konfigurationsdatei angegeben werden, zum Beispiel DEBUILD_SIGNING_HOOK='foo' (beachten Sie, dass Bindestriche in Unterstriche geändert werden!) oder als eine --signing-hook-foo-Befehlszeilenoption. Der Befehl führt bestimmte Prozentzeichenersetzungen durch: %% wird durch ein einzelnes %-Zeichen ersetzt, %p wird durch den Paketnamen ersetzt, %v durch die Versionsnummer des Pakets, %s durch die Versionsnummer der Quelle und %u durch die Versionsnummer der Originalautoren. Weder %s noch %u werden eine Epoche enthalten. %a wird 1 sein, falls die unmittelbar folgende Aktion ausgeführt wird und 0 falls nicht (zum Beispiel wird %a im dpkg-source-Hook 1 werden, falls dpkg-source ausgeführt werden soll und 0 falls nicht). Dann wird es zum Erledigen an die Shell gereicht, daher kann es Weiterleitungen und Ähnliches enthalten. Um zum Beispiel nur den dpkg-source-Hook auszuführen, falls dpkg-source ausgeführt wird, könnte der Hook etwas wie »if [ %a -eq 1 ]; then …; fi« sein.

Bitte seien Sie mit Hooks vorsichtig, da ihre falsche Verwendung zu Paketen führen kann, die nicht aus der Quelle gebaut werden können (FTBFS/fail to build from source). Sie können nützlich sein, um Momentaufnahmen von Dingen aufzuzeichnen oder dergleichen.

OPTIONEN

Einzelheiten finden Sie oben.
--no-conf, --noconf
keine Konfigurationsdateien lesen, Dies kann nur als erste auf der Befehlszeile angegebene Option benutzt werden.
--rootcmd=Befehl-zum-Erlangen-von-Root-Rechten, -rBefehl-zum-Erlangen-von-Root-Rechten
Befehl zum Erlangen von Root- (oder Fake-Root-)Rechten
--preserve-env
bereinigt die Umgebung nicht, ausgenommen PATH.
--preserve-envvar=Variable, -eVariable
entfernt die Variable Variable nicht aus der Umgebung.
Falls Variable mit einem Stern (»*«) endet, dann werden alle Variablen, deren Namen zum Teil von Variable vor dem Stern passen, erhalten.
--set-envvar=Variable=Wert, -eVariable=Wert
setzt die Umgebungsvariable Variable auf Wert und entfernt sie nicht aus der Umgebung.
--prepend-path=Wert
Sobald der normalisierte PATH gesetzt ist, wird ihm Wert vorangestellt.
--lintian
führt lintian nach dpkg-buildpackage aus. Dies ist das Standardverhalten und verkehrt alle Konfigurationsdateidirektiven ins Gegenteil.
--no-lintian
führt lintian nicht nach dpkg-buildpackage aus.
--no-tgz-check
prüft nicht einmal, falls dpkg-buildpackage ausgeführt wird und die Versionsnummer eine Debian-Revision hat, ob die .orig.tar.gz-Datei oder das .orig-Verzeichnis existiert, bevor das Bauen gestartet wird.
--tgz-check
prüft, falls dpkg-buildpackage ausgeführt wird und die Versionsnummer eine Debian-Revision hat, ob die .orig.tar.gz-Datei oder das .orig-Verzeichnis existiert, bevor das Bauen gestartet wird. Dies ist das Standardverhalten.
--username Benutzername
verwendet beim Signieren debrsign anstelle von debsign. Benutzername gibt die Legitimation an, die verwendet werden soll.
--foo-hook=Hook
setzt einen Hook, wie oben beschrieben. Falls Hook leer ist, entfernt dies den Hook.
--clear-hooks
bereinigt alle Hooks. Sie können später durch Befehlszeilenoptionen wieder eingesetzt werden.
--check-dirname-level N
Die Erklärung dieser Option finden Sie im vorhergehenden Abschnitt Prüfung von Verzeichnisnamen.
--check-dirname-regex regulärer_Ausdruck
Die Erklärung dieser Option finden Sie im vorhergehenden Abschnitt Prüfung von Verzeichnisnamen.
-d
führt nicht dpkg-checkbuilddeps aus, um Bauabhängigkeiten zu prüfen.
-D
führt dpkg-checkbuilddeps aus, um Bauabhängigkeiten zu prüfen.

KONFIGURATIONSVARIABLEN

Die beiden Konfigurationsdateien /etc/devscripts.conf und ~/.devscripts werden durch eine Shell in dieser Reihenfolge eingelesen, um Konfigurationsvariablen zu setzen. Befehlszeilenoptionen können benutzt werden, um einige der Konfigurationsdateieinstellungen außer Kraft zu setzen, andernfalls kann die Option --no-conf benutzt werden, um das Lesen dieser Dateien zu vermeiden. Einstellungen aus Umgebungsvariablen werden ignoriert, wenn diese Konfigurationsdateien gelesen werden. Die derzeit erkannten Variablen sind:
DEBUILD_PRESERVE_ENV
Falls dies auf yes gesetzt ist, ist es so, als ob der Befehlszeilenparameter --preserve-env benutzt würde.
DEBUILD_PRESERVE_ENVVARS
die Umgebungsvariablen, die erhalten werden sollen. Dies sollte eine durch Kommas getrennte Variablenliste sein. Dies entspricht der Verwendung mehrerer --preserve-envvar- oder -e-Optionen.
DEBUILD_SET_ENVVAR_Variable=Wert
Dies entspricht --set-envvar=Variable=Wert.
DEBUILD_PREPEND_PATH
Dies entspricht --prepend-path.
DEBUILD_ROOTCMD
Diese Variable auf Programm zu setzen ist die Entsprechung von -rProgramm.
DEBUILD_TGZ_CHECK
Diese Variable auf no zu setzen ist dasselbe wie die Befehlszeilenoption --no-tgz-check.
DEBUILD_SIGNING_USERNAME
Das Setzen dieser Variable entspricht der Benutzung der Befehlszeilenoption --username.
DEBUILD_DPKG_BUILDPACKAGE_OPTS
Diese Optionen werden an den Aufruf von dpkg-buildpackage weitergegeben werden. Sie werden vor allen anderen Befehlszeilenoptionen übergeben. Falls eine Option ein Leerzeichen enthalten soll, muss durch Verwendung zusätzlicher Anführungszeichen verhindert werden, dass die Shell die Option in mehrere trennt. Um zum Beispiel sicherzustellen, dass immer (auch beim Sponsern) Ihr eigener GPG-Schlüssel verwendet wird, kann die Konfigurationsdatei folgende Zeile enthalten:
DEBUILD_DPKG_BUILDPACKAGE_OPTS="-k'Julian Gilbey <jdg@debian.org>' -sa"
    
die genau zwei Optionen angibt. Ohne die zusätzlichen einfachen Anführungszeichen würde dpkg-buildpackage berechtigterweise beklagen, dass Gilbey eine unbekannte Option ist (es beginnt nicht mit einem --Zeichen).
Falls diese Option eine -r-, -d- oder -D-Option enthält, wird diese immer durch debuild mitberücksichtigt. Beachten Sie, dass eine -r-Option in dieser Variable die Einstellung DEBUILD_ROOTCMD außer Kraft setzt.
DEBUILD_FOO_HOOK
die Hook-Variable für den Hook foo. Weitere Einzelheiten finden Sie im vorhergehenden Abschnitt über Hooks. Standardmäßig ist sie leer.
DEBUILD_LINTIAN
Soll lintian ausgeführt werden? Falls dies auf no gesetzt ist, dann wird lintian nicht ausgeführt.
DEBUILD_LINTIAN_OPTS
Dies sind Optionen, die an den Aufruf von lintian übergeben werden sollen. Sie werden vor jeder anderen Befehlszeilenoption angegeben. Diese Variable wird verwendet, wie bei der Variablen DEBUILD_DPKG_BUILDPACKAGE_OPTS beschrieben.
DEVSCRIPTS_CHECK_DIRNAME_LEVEL, DEVSCRIPTS_CHECK_DIRNAME_REGEX
Die Erklärung dieser Variablen finden Sie im vorhergehenden Abschnitt Prüfung von Verzeichnisnamen. Beachten Sie, dass dies paketweite Konfigurationsvariablen sind und daher alle devscripts-Skripte beeinflussen, die ihren Wert prüfen. Dies wird in ihren jeweiligen Handbuchseiten und in devscripts.conf(5) beschrieben.

BEISPIELE

Um Ihr eigenes Paket zu bauen, führen Sie einfach debuild aus dem Quellen-Verzeichnis aus. dpkg-buildpackage(1)-Optionen können auf der Befehlszeile übergeben werden.

Die typischen Befehlszeilenoptionen, um nur die binären Pakete zu bauen, ohne die .changes-Datei (oder die nicht existierende .dsc-Datei) zu signieren:

debuild -i -us -uc -b
    

Ändern Sie das -b in -S, um nur ein Quellpaket zu bauen.

Ein Beispiel, das lintian verwendet, um die erzeugten Pakete zu testen, und diesem eine Option mitgibt:

debuild --lintian-opts -i
    

Beachten Sie hier die Reihenfolge der Optionen: Zuerst kommen die debuild-Optionen, dann die von dpkg-buildpackage, dann am Ende die Prüferoptionen. (Und standardmäßig wird lintian aufgerufen.) Falls Sie feststellen, dass Sie wiederholt die selben dpkg-buildpackage-Optionen benutzen, sollten Sie in Betracht ziehen, die Konfigurationsdateioption DEBUILD_DPKG_BUILDPACKAGE_OPTS zu benutzen, wie oben beschrieben.

Um ein Paket für ein sponserndes Hochladen zu bauen, wobei foobar_1.0-1.dsc und die jeweilige Quelldatei gegeben sind, führen Sie Befehle wie die folgenden aus:

dpkg-source -x foobar_1.0-1.dsc
cd foobar-1.0
debuild -k0x12345678
    

wobei 0x12345678 durch Ihre GPG-Schlüsselkennung oder andere Schlüsselbezeichner wie Ihre E-Mail-Adresse ersetzt wird. Außerdem können Sie wieder die Konfigurationsdateioption DEBUILD_DPKG_BUILDPACKAGE_OPTS wie oben beschrieben verwenden, um zu vermeiden, dass Sie die Option -k jedes Mal tippen müssen, wenn Sie ein gesonsortes Hochladen durchführen.

SIEHE AUCH

chmod(1), debsign(1), dpkg-buildpackage(1), dpkg-checkbuilddeps(1), fakeroot(1), lintian(1), su(1), sudo(1), super(1), devscripts.conf(5), dpkg-statoverride(8)

AUTOR

Das ursprüngliche debuild-Programm wurde von Christoph Lameter <clameter@debian.org> geschrieben. Die aktuelle Version wurde von Julian Gilbey <jdg@debian.org> verfasst.

ÜBERSETZUNG

Diese Übersetzung wurde mit dem Werkzeug po4a <URL:https://po4a.alioth.debian.org/> durch Chris Leick c.leick@vollbio.de im Juli 2012 erstellt und vom deutschen Debian-Übersetzer-Team korrekturgelesen. Bitte melden Sie alle Fehler in der Übersetzung an debian-l10n-german@lists.debian.org oder als Fehlerbericht an das Paket devscripts. Sie können mit dem folgenden Befehl das englische Original anzeigen »man -L C Abschnitt deutsche_Handbuchseite«.
Debian-Hilfswerkzeuge DEBIAN