Wiki-Artikel über rpmbuild

Christoph Wickert christoph.wickert at googlemail.com
Fri Mar 2 20:33:18 UTC 2012


Am Donnerstag, den 01.03.2012, 22:34 +0100 schrieb Olaf Radicke:
> 
> Hi!
> 
> Langsam entwickele ich einen richtigen inbrünstigen Hass auf rpm/rpmbuild.
> 
> Wenn ihr euch mal mein Beispiel anseht:
> https://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package/de#Makefile_erstellen
> 
> Dann fällt euch vielleicht im Makefile diese Zeile auf...

Warum überhaupt ein Makefile? Das hat nichts mit rpmbuild zu tun und
verkompliziert die Sache zusätzlich - was dem Verständnis nicht gerade
dienlich ist. Im Gegenteil: Du automatisierst bestimmte Schritte (z. B.
Source0 nach SOURCES kopieren), also muss man sie nicht mehr
durchführen. Übung macht bekanntlich den Meister, also lass das die
Leute doch selbst machen. Lass am besten das ganze Makefile weg, denn
das ist echt eine ganz andere Baustelle.

Die URL suggeriert zudem, dass es eine Übersetzung des englischen
Artikels ist, aber Du machst was ganz anderes. Und sollte die URL dann
nicht lauten: 
https://fedoraproject.org/wiki/Wie_man_ein_GNU_Hello_RPM_Paket_erstellt/de
oder
https://fedoraproject.org/wiki/Ein_GNU_Hello_RPM_Paket_erstellen/de ?


> <snip>
> dist-rpm: pre-rpm
> <snap>
> 
> Eigentlich ist das "pre-rpm" zu viel, denn es sollte vom Speck-File
> aufgerufen werden...

Mhh, Speck, lecker! ;)

> <snip>
> %prep
> %setup -q
> make PREFIX=$RPM_BUILD_ROOT pre-rpm
> <snap>
> 
> Doch dieser Befehl wird nie ausgeführt. Ich habe nie wirklich verstanden was
> "%setup -q", aber offenbar führt er dazu, das "%prep" nicht ausgeführt wird.

%setup nimmt den source tarball aus SOURCES, entpackt ihn und wechselt
in den neu entstandenen Ordner. Also versuchst Du, den tarball zu
entpacken, bevor Du ihn mit make pre-rpm überhaupt nach SOURCES kopiert
hast. Wie Du richtig sagst ein Henne-Ei-Problem.
 
> Wenn ich "%setup -q" woanders hin verschiebe, wird "%prep" auf ein mal
> ausgeführt:
>
> <snip>
> [...]
> + cd /home/or/rpmbuild/BUILD
> + make PREFIX=/home/or/rpmbuild/BUILDROOT/rpm-uebung-1-1.noarch pre-rpm
> make[1]: Entering directory `/home/or/rpmbuild/BUILD'
> make[1]: *** Keine Regel, um >>pre-rpm<< zu erstellen.  Schluss.
> [...]
> 
> <snap>
> 
> Der prefix ist definitiv falsch. Also ersetze ich die Zeile durch...
> 
> <snip>
> make PREFIX=%(echo $HOME)/rpmbuild/ pre-rpm
> <snap>
> 
> Nun lautet die Fehlermeldung....
> 
> <snip>
> [...]
> Ausführung(%prep): /bin/sh -e /var/tmp/rpm-tmp.N9C8lB
> + umask 022
> + cd /home/or/rpmbuild/BUILD
> + make PREFIX=/home/or/rpmbuild/ pre-rpm
> make[1]: Entering directory `/home/or/rpmbuild/BUILD'
> make[1]: *** Keine Regel, um >>pre-rpm<< zu erstellen.  Schluss.
> [...]
> <snap>
> 
> ...Ja? Warum sollte jetzt das Makefile auf ein mal in /home/or/rpmbuild/BUILD
> sein? 

Weil 'cd /home/or/rpmbuild/BUILD' teil des %setup Makros ist. Details
dazu unter http://www.rpm.org/max-rpm-snapshot/s1-rpm-inside-macros.html

> Irgend wie scheint sich auf ein mal rpmbuild nicht mehr zuständig zu
> fühlen, das Tar-Archif dort hin auszupacken, wo es es gerne hin haben will...
> 
> 
> Also wenn ich das richtig sehe, gibt es hier ein Henne-Ei-Problem
> (http://de.wikipedia.org/wiki/Henne-Ei-Problem):
> 
> Das Makefile brauch Informationen von rpmbuild mit es die nötigen Vorbereitungen
> treffen kann, mit rpmbuild funktioniert. rpmbuild braucht wiederum wiederum
> Informationen von Makefile.
> 
> Jetzt könnte man es sich leicht machen und ein autonomes Spec-File machen. Bei
> einem Projekt mit einer Bash-Datei kein Problem. Aber bei einem Großen Projekt
> mit hunderten Dateien wird man ja schier wahnsinnig ständig zwei Files anpassen
> zu müssen. Zumal 95% identisch und redundant ist.

Und zwar? Was ist hier redundant?

Das Übersetzen der Quellen und das Erstellen eines Paketes sind 2
verschiedene Vorgänge. Das eine wird mit dem Makefile gemacht und das
andere mit der spec. Solange man nicht beides vermischt ist da meiner
Ansicht nach gar nichts redundant.

> Also entweder ich hab irgend was Grundsätzliches an rpmbuild noch nicht
> verstanden, oder das Tool ist echt für den Ar***.

Ich vermute ersteres.

Beste Grüße,
Christoph




More information about the de-users mailing list