On Thu, 1 Mar 2012 22:34:24 +0100 (CET), OR (Olaf) wrote:
Hi!
Langsam entwickele ich einen richtigen inbrünstigen Hass auf rpm/rpmbuild.
Keine gute Einleitung. ;)
Bin kurz angebunden, daher nur ein paar Kommentare im folgenden:
Wenn ihr euch mal mein Beispiel anseht:
https://fedoraproject.org/wiki/How_to_create_a_GNU_Hello_RPM_package/de#M...
Dann fällt euch vielleicht im Makefile diese Zeile auf...
Ich verstehe den Ansatz mit dem Makefile, die Implementation ist aber
noch Murks.
<snip>
dist-rpm: pre-rpm
<snap>
Eigentlich ist das "pre-rpm" zu viel, denn es sollte vom Speck-File aufgerufen
werden...
Sicherlich kein Tippfehler, also lassen wir es doch bei "spec", okay?
<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",
Im Gegensatz zu %prep ist %setup ein Kommando mit hinreichend gut
dokumentierten Optionen. Laß für den Anfang -q ("quiet") weg, damit in
der Ausgabe nichts unterdrückt wird. %setup ist für das Anlegen des
"Build" Verzeichnisses und das Entpacken der "Source" Archive
zuständig.
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>
Dieser PREFIX ist auch falsch. Ohne Kommentierung sogar unsinnig.
Üblich wäre PREFIX=/usr bzw. PREFIX=%{_prefix}.
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...
rpmbuild erwartet eine bestimmte Verzeichnisstruktur, in dessen Verzeichnissen
die einzelnen Dateien gesucht werden. Befindet sich die spec Datei in $PWD,
werden die "Source" Dateien/Archive dort noch lange nicht gesucht.
Schau Dir als Beispiel mal die Ausgabe von
rpm --eval %_topdir
rpm --eval %_sourcedir
rpm --eval %_specdir
rpm --eval %_tmppath
rpm --eval %_buildroot
an. Diese Variablen lassen sich natürlich umdefinieren, was einige Paketierer
machen, weil sie die Voreinstellung nicht mögen. Notfalls mußt Du diese
Variablen beim Aufruf von rpmbuild umbiegen.
rpmbuild --define _sourcedir $(pwd) -ba datei.spec
Und keine Angabe von --target. Wenn Du "noarch" brauchst, gehört diese
Angabe in die spec. BuildArch: noarch
Also entweder ich hab irgend was Grundsätzliches an rpmbuild noch
nicht
verstanden, oder das Tool ist echt für den Ar***.
Ersteres. ;)
Weitere Antworten von mir bitte nicht vor Mitte nächster Woche erwarten.
--
Fedora release 16 (Verne) - Linux 3.2.7-1.fc16.x86_64
loadavg: 0.05 0.07 0.10