rpmbuild nur install

Ich habe aus einer source RPM alles compiled.

später habe ich nochmals die install stage ausgefuehrt mit:

rpmbuild -bi --short-circuit meine.spec

der ganze stuff befindet sich nun in:

/usr/src/packages/BUILDROOT/meine/...

Ich Frage mich jedoch wieso er bei einem

rpmbuild -ba meine.spec 

die fertigen RPMs in /usr/src/packages/RPMS/x86_64 erstellt.

jedoch bei einem rpmbuild -bi --short-circuit nicht.

gibt es eine Möglichkeit aus den bestehenden und compillierten source direkt
die RPMs zu erstellen?

Tja, so ist -bi definiert: stoppe nach der install section (also bevor das Paket erstellt wird).
Siehe rpmbuild Command Reference
Um ein Paket zu erstellen musst du -bb oder -ba verwenden, dafür gibts aber kein --short-circuit, sh. Link.

gibt es eine Möglichkeit aus den bestehenden und compillierten source direkt
die RPMs zu erstellen?

Scheinbar nicht. Vom vorigen Link:

There is only one other build stage that can be –short-circuit’ed, and that is the install stage. The reason for this restriction is to make it difficult to bypass RPM’s use of pristine sources. If it were possible to –short-circuit to -bb or -ba, a package builder might take the “easy” way out and simply hack at the build tree until the software built successfully, then package the hacked sources. So, RPM will only –short-circuit to -bc or -bi. Nothing else will do.

PS: Arbeitest du als root? In neueren openSUSE Versionen verwendet rpmbuild nämlich ~/rpmbuild/ und nicht mehr /usr/src/packages/

Aber nun stellen wir uns einmal Folgendes vor:

  • der source code ist riesig und dauert ewig zum entpacken und compilen.
  • jetzt möchte ich auch eventuell nach dem entpacken des source codes dazu auch noch änderungen an diesem vornehmen.

Das ist einfach extrem assig wenn der jedesmal nen rm -rf auf den source durchzieht und mit -ba alles wieder neu beginnt.
es muss doch ne Lösung geben das ich hier wirklich nur das RPM packet erstellen kann und zwar direkt aus dem BUILDROOT heraus.

oh ja :slight_smile:

Deswegen gibts ja --short-curcuit für -bi und -bc.
Aber um das **endgültige **Paket zu erstellen, muss man eben den ganzen Prozess durchlaufen lassen.

es muss doch ne Lösung geben das ich hier wirklich nur das RPM packet erstellen kann und zwar direkt aus dem BUILDROOT heraus.

Genau das ist aber scheinbar von den RPM Entwicklern nicht erwünscht! Sh. Zitat.

oh ja :slight_smile:

Ich will hier jetzt nicht über die Risiken sprechen, ich hab ja auch schon oft Programme als root kompiliert… :wink:
Aber: falls du irgendwann mal das Paket auf dem Buildservice bauen willst, kann das Probleme verursachen. Dort wird es nämlich als Benutzer in einer ziemlich eingeschränkten Umgebung erstellt. Außerdem kanns dir passieren, dass aufgrund eines Fehlers im spec file rpmbuild irgendwelche Dateien wild in deinem System installiert (oder sogar löscht) ohne dass du’s merkst.

Na gut, dann werd ich das wohl nochmal komplett compilen.

Ich hab ja schon überlegt ob ich aus der .spec File mal die %clean section raus nehme

Naja die root sache… faulheit, läuft eh nur in einer VirtualBox.