2 Stimmen

RPM: Namen der Unterpakete aus der Spezifikation finden

Wie kann ich wissen, was die Unterpakete einer Spezifikationsdatei sind? Gibt es ein Makro, das die Liste der Pakete und Unterpakete erweitert?

Ich möchte grep nicht verwenden, weil Unterpakete mit -n definiert werden können oder sogar durch ein anderes Makro definiert werden können (was zu einer erneuten Überprüfung führt)

Exemple :

$ rpmbuild project.spec --eval '%packages_list'

3voto

DimStar Punkte 56

Ich verwende im Allgemeinen die einfache Form:

rpm -q --specfile FILENAME.SPEC

2voto

Ein wenig Python wird die Arbeit für Sie erledigen. Ich bin sicher, dass rpm-4.8 auch Python-Bindungen mit spec-Objekt hatte (nehmen Sie eine Datei mit +x und dem Namen specinfo.py an):

#!/usr/bin/python                                                                                                        
import sys
import rpm
spec = rpm.spec(sys.argv[1])
for subpackages in spec.packages:
    print subpackages.header["name"]

kann verwendet werden, um alle Unterpakete zu erhalten. Sie können diesen Befehl für die spec-Datei im gleichen Verzeichnis wie ausführen:

python specinfo.py <spec file>

1voto

Saturn Junction Punkte 39

Rpm -q --queryformat="%{NAME} \n " --specfile projekt.spec

0voto

Stan Punkte 2429

Nun, ich habe ein wenig sed verwendet, aber da ich auch rpmspec um die Makros zunächst zu entrollen, sollte dies relativ problemlos möglich sein:

$ export SPEC_FILE=maven-surefire.spec
$ rpmspec -P $SPEC_FILE | grep '^%package' | sed "s/-n //;t end;s/^/${SPEC_FILE/.spec}-/;:end;s/%package //"

Beachten Sie, dass es erforderlich wäre basename aufrufen, um mit Pfaden zu arbeiten, sollte aber ansonsten recht fehlerresistent sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X