RPMBUILD(8) RPMBUILD(8)

rpmbuild - RPM-Paket(e) bauen

ÜBERSICHT

rpmbuild {-ba|-bb|-bp|-bf|-bc|-bi|-bl|-bs|-br|-bd} [rpmbuild-options] SPECDATEI …

rpmbuild {-ra|-rb|-rp|-rf|-rc|-ri|-rl|-rs|-rr|-rd} [rpmbuild-options] QUELLPAKET …

rpmbuild {-ta|-tb|-tp|-tf|-tc|-ti|-tl|-ts|-tr|-td} [rpmbuild-options] TARBALL …

rpmbuild {--rebuild|--recompile} QUELLPAKET …

rpmbuild --showrc

[--buildroot VERZEICHNIS] [--clean] [--nobuild] [--rmsource] [--rmspec] [--short-circuit] [--build-in-place] [--noprep] [--noclean] [--nocheck] [--rpmfcdebug] [--target PLATTFORM] [--with OPTION] [--without OPTION]

rpmbuild wird zum Bau von sowohl Binär- als auch Quell-Softwarepaketen verwendet. Ein Paket besteht aus einem Dateiarchiv sowie Metadaten, die zum Installieren und Löschen der Archivdateien verwendet werden. Die Metadaten enthalten Hilfsskripte, Dateiattribute und beschreibende Informationen zum Paket. Die Pakete gibt es in zwei Varianten: Binärpakete, welche die zu installierende Software enthalten, und Quellpakete, welche den Quellcode und die Anweisungen zum Bauen von Binärpaketen enthalten.

Einer der folgenden grundlegenden Modi muss ausgewählt werden: Paket bauen, Paket aus einem Tarball bauen, Paket erneut kompilieren, Konfiguration anzeigen.

Diese Optionen können in allen der verschiedenen Modi verwendet werden.

-?, --help
gibt eine längere Hilfemeldung als sonst aus.
gibt eine einzelne Zeile aus, welche die Versionsummer von rpm angibt.
gibt so wenig wie möglich aus – es werden normalerweise nur Fehlermeldungen angezeigt.
gibt ausführliche Informationen aus - normale Routine-Fortschrittsmeldungen werden angezeigt.
gibt umfangreiche Debugging-Informationen aus.
aktiviert das Debugging der Erzeugung der Abhängigkeiten.
lässt rpm die Dateien in der durch Doppelpunkte getrennten DATEILISTE nacheinander einlesen, um Konfigurationsinformationen zu erhalten. Nur die erste Datei in der Liste muss existieren; die Tilde wird dabei zum Wert der Umgebungsvariable $HOME expandiert. Die vorgegebene DATEILISTE ist/usr/lib/rpm/rpmrc:/usr/lib/rpm/<Anbieter>/rpmrc:/etc/rpmrc:~/.rpmrc.
leitet die Ausgabe des Befehls rpm an den angegebenen BEFEHL weiter.
verwendet die im VERZEICHNIS angegebene Datenbank anstelle des vorgegebenen Pfads /var/lib/rpm.
verwendet das Dateisystem in der durch das VERZEICHNIS angegebenen Wurzel für alle Aktionen. Beachten Sie, dass dies bedeutet, dass die Datenbank in diesem VERZEICHNIS für Abhängigkeitsüberprüfungen verwendet wird und Scriptlets (zum Beispiel %post zum Installieren oder %prep zum Erstellen eines Pakets) nach einem Wechsel in das angegebene VERZEICHNIS mit chroot(2) ausgeführt werden.
definiert ein MAKRO mit dem angegebenen AUSDRUCK.
wählt das angegebene SCM zur Verwendung mit %autosetup, falls keines in der Spec-Datei angegeben ist. Beachten Sie, dass nicht alle Werte für SCM, zum Beispiel patch (die Vorgabe) sowie gendiff, git oder quilt mit allen in der %autosetup-Zeile angegebenen Patches und Optionen funktionieren, insbesondere mit der Option -pN.

Die allgemeine Form eines Baubefehls für rpm lautet:

rpmbuild {-bPHASE|-rPHASE|-tPHASE} [rpmbuild-options] DATEI …

Das verwendete Argument ist -b, falls eine Spec-Datei zum Bau des Pakets eingesetzt wird, -r, wenn ein Quellpaket erneut gebaut werden soll und -t, falls rpmbuild in einer (gegebenenfalls komprimierten) Tar-Datei nach der zu verwendenden Spec-Datei suchen soll.

Pakete werden in einer Reihe von Phasen gebaut. Die ersten sechs entsprechen den folgenden Abschnitten in einer Spec-Datei: %prep, %generate_buildrequires, %build, %install, %check und %clean. Zuletzt werden Binär- und Quellpakete in der Zusammenbauphase gebaut.

Das PHASE-Zeichen gibt die Phase an, mit der der Vorgang beendet werden soll (nachdem alle ihr vorausgehenden Phasen durchlaufen wurden). Es ist eines aus den folgenden Zeichen:

führt einen vollständigen Bauvorgang aus – bis einschließlich der Zusammenbauphase. In den meisten Fällen ist dies die zu wählende Option.
baut nur das Binärpaket - führt alles bis einschließlich der Zusammenbauphase aus, aber ohne das Quellpaket zu erstellen. Bei Erfolg wird das Bauverzeichnis entfernt (wie mit --clean).
entpackt die Quellen und wendet eventuelle Patches an – nur die %prep-Phase wird durchlaufen.
konfiguriert die Quellen - führt alles bis einschließlich der Konfigurationsphase aus. Dies beinhaltet im Allgemeinen einen Aufruf von ./configure oder etwas Gleichbedeutendem.
kompiliert die Quellen – führt alles bis einschließlich der %build-Phase aus. Dies beinhaltet im Allgemeinen einen Aufruf von make oder etwas Gleichbedeutendem.
installiert die Binärdateien in BuildRoot – führt alles bis einschließlich der %check-Phase aus. Dies beinhaltet im Allgemeinen einen Aufruf von make install und make check oder etwas Gleichbedeutendem.
führt eine Listenüberprüfung aus. Der %files-Abschnitt in der Spec-Datei wird Makro-expandiert und es wird überprüft, ob jede der angegebenen Dateien existiert.
baut nur das Quellpaket – springt direkt zur Zusammenbauphase, ohne eine der vorausgehenden Phasen zu durchlaufen oder Binärpakete zu bauen.
baut nur das Quellpaket, wertet aber auch dynamische Bauabhängigkeiten aus und bezieht diese ein – führt alles bis einschließlich der %generate_buildrequires-Phase aus und springt dann direkt zur Zusammenbauphase, ohne Binärpakete zu bauen. Dieser Befehl kann dazu verwendet werden, dynamische Bauabhängigkeiten vollständig aufzulösen. Im Abschnitt DYNAMISCHE BAUABHÄNGIGKEITEN finden Sie weitere Details hierzu.
Überprüft dynamische Bauabhängigkeiten und baut das Paket .buildreqs.nosrc.rpm falls etwas fehlt. Baut nichts anderes.

Die folgenden Optionen können außerdem verwendet werden:

ersetzt das Tag BuildRoot beim Bau eines Pakets durch das angegebene VERZEICHNIS.
entfernt den Bau-Dateibaum, nachdem die Pakete gebaut wurden.
führt keine Bauphasen aus. Dies ist zum Testen von Spec-Dateien nützlich.
führt die %prep-Phase nicht aus, selbst wenn diese in der Spec-Datei vorhanden ist.
führt die Bauphase %clean nicht aus, selbst wenn diese in der Spec-Datei vorhanden ist.
führt die Bauphase %check nicht aus, selbst wenn diese in der Spec-Datei vorhanden ist.
baut keine Debuginfo-Pakete.
überprüft keine Bauabhängigkeiten.
entfernt die Quellen nach dem Bau (kann auch für sich allein verwendet werden, zum Beispiel »rpmbuild --rmsource foo.spec«).
entfernt die Spec-Datei nach dem Bau (dies kann auch für sich allein verwendet werden, zum Beispiel »rpmbuild --rmspec foo.spec«).
springt direkt zu der angegebenen Phase (das heißt, überspringt alle Phasen, die zu der angegebenen Phase führen). Dies ist nur mit -bc, -bi und -bb zulässig. Dies ist nur für lokale Testzwecke nützlich. Auf diese Weise gebaute Pakete werden mit einer nicht auflösbaren Abhängigkeit versehen, um deren versehentliche Verwendung zu verhindern.
baut aus lokal ausgecheckten Quellen. Dabei wird _builddir auf das aktuelle Arbeitsverzeichnis gesetzt. Die Auswertung von -n und untar in der %setup-Phase und das Löschen von buildSubdir wird übersprungen.
interpretiert beim Bauen eines Pakets die PLATTFORM als arch-vendor-os und setzt die Makros %_target, %_target_cpu und %_target_os entsprechend.
aktiviert die Konfigurationsoption OPTION für den Bau.
deaktiviert die Konfigurationsoption OPTION für den Bau.

Es gibt zwei weitere Möglichkeiten, den Bauvorgang mit rpm anzustoßen:

rpmbuild --rebuild|--recompile QUELLPAKET …

Wenn es auf diese Weise aufgerufen wird, installiert rpmbuild das benannte Quellpaket und führt die %prep-Phase (die Vorbereitung), die Kompilierung und die Installation aus. Zusätzlich baut die Option --rebuild ein neues Binärpaket. Wenn der Bau abgeschlossen ist, werden das Bauverzeichnis (wie in --clean) und die Quell- sowie Spec-Dateien gelöscht.

Diese Optionen wurden nun durch die -r*-Optionen ersetzt, die eine weitaus genauere Steuerung ermöglichen, welche Bauphasen ausgeführt werden sollen.

Wenn die %generate_buildrequires-Phase läuft und einige der neu erzeugten Bauabhängigkeiten nicht erfüllt werden konnten, baut rpmbuild ein vorläufiges Quellpaket, das die neuen Bauabhängigkeiten enthält und mit buildreqs.nosrc.rpm endet, und beendet sich mit dem Code 11. Dieses Paket kann dann anstelle des originalen Quellpakets verwendet werden, um die fehlenden Bauabhängigkeiten auf die übliche Weise aufzulösen und zu installieren, beispielsweise mit dnf-builddep(8).

In einer Spec-Datei kann es mehrere Schichten dynamischer Bauabhängigkeiten geben; das Vorhandensein einer spezifischen Bauabhängigkeit im System kann beim nächsten Bau aus dem gleichen Quellpaket neue Bauabhängigkeiten hervorbringen. Um sicherzustellen, dass alle zum Ausführen von rpmbuild mit der Option -br erforderlichen Bauabhängigkeiten erfüllt sind, ist es der einfachste Weg, die neuen Abhängigkeiten des buildreqs.nosrc.rpm-Pakets zu installieren und die gesamte Prozedur so oft zu wiederholen, bis rpmbuild nicht mehr mit dem Code 11 beendet wird.

Falls die Option -br mit --nodeps gekoppelt wird, wird stets der Exit-Code 11 zurückgegeben und ein buildreqs.nosrc.rpm-Paket gebaut.

Der Befehl

rpmbuild --showrc

zeigt die Werte an, die rpmbuild für alle Optionen anwenden wird, die gegenwärtig in den Konfigurationsdateien rpmrc und macros gesetzt sind.

/usr/lib/rpm/rpmrc
/usr/lib/rpm/<Anbieter>/rpmrc
/etc/rpmrc
~/.rpmrc

/usr/lib/rpm/macros
/usr/lib/rpm/<Anbieter>/macros
/etc/rpm/macros
~/.rpmmacros

/var/tmp/rpm*

gendiff(1), popt(3), rpm(8), rpm2cpio(8), rpmkeys(8), rpmspec(8), rpmsign(8)

rpmbuild --help - da rpm benutzerdefinierte Optionen über Popt-Aliase unterstützt, können wir unmöglich garantieren, dass die Beschreibungen in diesem Handbuch exakt dem entsprechen, was verfügbar ist.

http://www.rpm.org/ <URL:http://www.rpm.org/>

Marc Ewing <marc@redhat.com>
Jeff Johnson <jbj@redhat.com>
Erik Troan <ewt@redhat.com>

ÜBERSETZUNG

Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com> und Christoph Brinkhaus <c.brinkhaus@t-online.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.

9. Juni 2002