Re: Wiki-Artikel über rpmbuild

Michael Schwendt <[email protected]>
Newsgroups gmane.linux.redhat.fedora.german
Message-ID <[email protected]>
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#Makefile_erstellen
> 
> 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
--
de-users mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/de-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.