DEBUILD(1) | General Commands Manual | DEBUILD(1) |
debuild - baut ein Debian-Paket
debuild [Debuild-Optionen]
[Dpkg-Buildpackage-Optionen] [--lintian-opts
Lintian-Optionen]
debuild [Debuild-Optionen] --
binary|binary-arch|binary-indep|clean
…
debuild erstellt alle Dateien, die zum Hochladen eines Debian-Pakets nötig sind. Zuerst führt es dpkg-buildpackage aus, dann lintian für die erstellte .changes-Datei (unter der Annahme, dass lintian installiert ist) und signiert schließlich die zugehörigen Dateien (mittels debsign(1) anstelle von dpkg-buildpackage(1) selbst; alle passenden Schlüsselsignierungsoptionen werden übergeben). Das Signieren wird übersprungen, falls die Distribution UNRELEASED ist, außer es wird die Option --force-sign von dpkg-buildpackage benutzt. An dpkg-buildpackage und lintian können Parameter übergeben werden, wobei letztere mit der Option --lintian-opts angegeben werden. Die in diesem Fall erlaubten Optionen sind --lintian und --no-lintian, um den Lintian-Schritt zu erzwingen beziehungsweise zu überspringen. Standardmäßig wird lintian ausgeführt. Außerdem sind verschiedene Optionen für das Setzen und Erhalten von Umgebungsvariablen verfügbar, wie nachfolgend im Abschnitt »Umgebungsvariablen« beschrieben. Bei dieser Methode debuild auszuführen wird außerdem das Bauprotokoll ../<Paket>_<Version>_<Architektur>.build sichern.
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.
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:
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.
Da Umgebungsvariablen den Bau eines Pakets beeinflussen, oft ungewollt, reduziert debuild die Umgebung, indem es alle Umgebungsvariablen außer TERM, HOME, LOGNAME, GNUPGHOME, PGPPATH, GPG_AGENT_INFO, GPG_TTY, DBUS_SESSION_BUS_ADDRESS, FAKEROOTKEY, DEBEMAIL, DEB_*, den FLAGS-Variablen (C, CPP, CXX, LD und F) und ihren _APPEND-Gegenstücken sowie den Locale-Variablen LANG und LC_* entfernt. TERM ist, falls es nicht gesetzt wurde, auf »dumb« gesetzt und PATH ist auf »/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11« gesetzt.
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.
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 Benutzern 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.
debuild unterstützt eine Reihe von Hooks, wenn dpkg-buildpackage ausgeführt wird. Beachten Sie, dass die Hooks dpkg-buildpackage bis (einschließlich) lintian an dpkg-buildpackage mittels ihrer zugehörigen Option --hook-name weitergereicht werden. Folgende Hooks sind verfügbar:
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.
Einzelheiten finden Sie oben.
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_DPKG_BUILDPACKAGE_OPTS="-k'Julian Gilbey <jdg@debian.org>' -sa"
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.
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)
Das ursprüngliche debuild-Programm wurde von Christoph Lameter <clameter@debian.org> geschrieben. Die aktuelle Version wurde von Julian Gilbey <jdg@debian.org> verfasst.
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 |