Re: Wiki-Artikel über rpmbuild

Olaf Radicke briefkasten at olaf-radicke.de
Thu Mar 1 21:34:24 UTC 2012



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...

<snip>
dist-rpm: pre-rpm
<snap>

Eigentlich ist das "pre-rpm" zu viel, denn es sollte vom Speck-File aufgerufen
werden...

<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.
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? 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.

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


Gruß

Olaf


More information about the de-users mailing list