BEZEICHNUNG¶
rpmbuild - RPM-Paket(e) bauen
ÜBERSICHT¶
rpmbuild -bPHASE [Optionen]
SPEC-DATEI …
rpmbuild -rPHASE [Optionen]
QUELLPAKET …
rpmbuild -tPHASE [Optionen]
TAR-ARCHIV …
rpmbuild {--rebuild|--recompile}
[Optionen] QUELLPAKET …
BESCHREIBUNG¶
rpmbuild wird zum Bau von Softwarepaketen im RPM-Format in
einer automatisierten und nachvollziehbaren Weise 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.
AKTIONEN¶
-bPHASE
erstellt die angegebene PHASE aus einer
Spec-Datei.
-rPHASE
erstellt die angegebene PHASE aus einem
Quell-RPM-Paket.
-tPHASE
erstellt die angegebene
PHASE aus einem
tar(5)-Archiv.
--rebuild, --recompile
Kompatibilitäts-Aliase für
-ra.
Pakete werden in vier Etappen erstellt: Einlesen, Bauen,
Zusammenfügen und Bereinigen. Die beiden mittleren Etappen sind
weiter in die unten aufgeführten Phasen unterteilt, die
separat erstellt werden können. Das Erstellen einer Phase
bedeutet, dass alle vorhergehenden Phasen bis einschließlich der
angegebenen Phase ausgeführt werden, sofern nicht anders
angegeben.
Zusammenfügephasen¶
Die Zusammenfügephasen erstellen Pakete und sind der
primäre Weg der Interaktion mit rpmbuild. Im Zweifelsfall
wählen Sie eine von diesen aus.
a
Erstellt sowohl Quell- als auch Binärpakete. Dies
ist keine eigentliche Phase, sondern eine Kombination aus b und
s, mit dem Unterschied, dass auf diese Weise erstellte Pakete ein
Cookie enthalten, das anzeigt, dass sie aus demselben Bau stammen. Bei Erfolg
wird das Bauverzeichnis entfernt.
b
Erstellt nur die Binärpakete. Bei Erfolg wird das
Bauverzeichnis entfernt.
r
baut nur das Quellpaket und wertet dabei dynamische
Bauabhängigkeiten aus. Die Phasen %prep und
%generate_buildrequires werden durchlaufen, bevor ein Paket erstellt
wird. Im Abschnitt DYNAMISCHE BAUABHÄNGIGKEITEN finden Sie
weitere Details hierzu.
s
baut nur das Quellpaket. Es werden keine Bauphasen
durchlaufen.
Bauphasen¶
Die Bauphasen erzeugen die zu paketierenden Artefakte,
typischerweise durch Patchen und Kompilieren der Quellen und Installieren
der Binärdateien im »buildroot«. Diese Phasen
entsprechen im Allgemeinen Spec-Datei-Abschnitten wie %prep,
%build oder %install, es gibt jedoch einige, die implizit
sind.
Das separate Durchlaufen dieser Phasen ist im Allgemeinen nur beim
Paketieren neuer Software im RPM-Format und/oder bei der Fehlerbehebung
sinnvoll. Sie sind unten in der Reihenfolge der Ausführung
aufgeführt, wobei der entsprechende Spec-Datei-Abschnitt
gegebenenfalls in Klammern steht.
p (%prep)
entpackt die Quellen und wendet eventuelle Patches
an.
d (%generate_buildrequires)
Überprüft dynamische
Bauabhängigkeiten und baut das Paket buildreqs.nosrc.rpm, falls
etwas fehlt. Es wird nichts anderes gebaut.
f (%conf)
konfiguriert die Quellen. Dies beinhaltet im Allgemeinen
einen Aufruf von ./configure oder etwas Gleichbedeutendem.
c (%build)
kompiliert die Quellen. Dies beinhaltet im Allgemeinen
einen Aufruf von
make(1) oder etwas Gleichbedeutendem.
i (%install und %check)
installiert die Binärdateien in
»buildroot«. Dies beinhaltet im Allgemeinen einen Aufruf von
make install und make check oder etwas Gleichbedeutendem.
l
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. Dies
erfordert, dass ein vorheriger Bauvorgang bis zur %install-Phase
ausgeführt wurde.
ARGUMENTE¶
SPEC-DATEI
Eine Spec-Datei für RPM.
QUELLPAKET
Ein RPM-Quellpaket (mit der Endung
.src.rpm).
TAR-ARCHIV
Ein
tar(5)-Archiv, das optional komprimiert sein
kann. Um direkt mit
rpmbuild erstellt werden zu können, muss ein
Archiv eine Spec-Datei entweder mit dem Namen
Specfile oder mit der
Endung
.spec enthalten.
OPTIONEN¶
--build-in-place
baut aus lokal ausgecheckten Quellen im aktuellen
Arbeitsverzeichnis. Der Bau-Dateibaum ist so aufgebaut, als ob %setup
verwendet worden wäre. Allerdings verweist
%builddir/%buildsubdir zurück auf das aktuelle
Arbeitsverzeichnis. %prep wird komplett übersprungen.
--clean
entfernt den Bau-Dateibaum, nachdem die Pakete gebaut
wurden (Vorgabe).
--nobuild
führt keine Bauphasen aus. Dies ist zum Testen von
Spec-Dateien nützlich.
--nocheck
führt die %check-Phase nicht aus, selbst
wenn diese in der Spec-Datei vorhanden ist.
--noclean
führt die %clean-Phase nicht aus, selbst
wenn diese in der Spec-Datei vorhanden ist.
--nodebuginfo
baut keine Debuginfo-Pakete.
--nodeps
überprüft keine
Bauabhängigkeiten.
--noprep
führt die Bauphase %prep nicht aus, auch
wenn sie in der Spec-Datei vorhanden ist. Dies setzt voraus, dass ein anderer
rpmbuild-Lauf stattgefunden hat, bei dem %prep bereits
ausgeführt wurde.
--rmsource
entfernt die Quellen nach dem Bau (kann auch für
sich allein verwendet werden, zum Beispiel rpmbuild --rmsource
foo.spec). Beachten Sie, dass per Definition NoSource- und
NoPatch- Dateien keine Quellen sind und daher von dieser Option nicht
beeinflusst werden.
--rmspec
entfernt die Spec-Datei nach dem Bau (dies kann auch
für sich allein verwendet werden, zum Beispiel rpmbuild
--rmspec foo.spec).
--rpmfcdebug
gibt Debug-Informationen zur Dateiklassifizierung und
Abhängigkeitserzeugung aus.
--scm=SCM
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.
--short-circuit
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.
--with OPTION
aktiviert die Konfigurationsoption OPTION
für den Bau.
--without OPTION
deaktiviert die Konfigurationsoption OPTION
für den Bau.
Siehe rpm-common(8) für die Optionen, die allen
Aktionen gemeinsam sind.
DYNAMISCHE BAUABHÄNGIGKEITEN¶
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.
UMGEBUNGSVARIABLEN¶
RPM_BUILD_NCPUS
Setzt die automatische Erkennung der Anzahl der CPUs, die
für parallelisierte Abschnitte des Baus verwendet werden, außer
Kraft.
EXIT-STATUS¶
Bei Erfolg wird 0 zurückgegeben, anderenfalls ein
Fehlercode ungleich Null.
Pakete mit einem Abschnitt %generate_buildrequires geben
den Code 11 zurück, wenn die DYNAMISCHEN
BAUABHÄNGIGKEITEN nicht erfüllt sind.
BEISPIELE¶
rpmbuild --rebuild hello-1.0-1.src.rpm
Baut Binär- und Quellpakete aus dem Quellpaket
hello-1.0-1.src.rpm.
rpmbuild -bb --nocheck --with openssl hello.spec
Baut Binärpakete aus der Spec-Datei
hello.spec, wobei die %check-Phase (falls vorhanden)
übersprungen und die Unterstützung für
openssl-Unterstützung als Baubedingung aktiviert wird (in der
Annahme, dass eine solche in der Spec-Datei angegeben ist).
rpmbuild -ta hello-2.0.tar.gz
Erstellt Binär- und Quellpakete aus dem
komprimierten Tarball hello-2.0.tar.gz, vorausgesetzt, das Archiv
enthält eine gültige Spec-Datei (siehe TAR-ARCHIV
für Details).
rpmbuild -bc hello.spec
Baut hello.spec bis einschließlich der
%build-Phase, das heißt, ohne tatsächlich Pakete zu
erstellen.
rpmbuild -bi --short-circuit hello.spec
führt nur die %install-Phase von
hello.spec aus und überspringt alle vorherigen Phasen. Dies
setzt einen vorherigen Durchlauf von mindestens bis zur %build-Phase
voraus; siehe vorheriges Beispiel. Nützlich, um vollständige
Neuerstellungen zu vermeiden, wenn Sie am Abschnitt %files eines Pakets
arbeiten.
Ü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.