2011-12-09 20 views
2

仕様ファイルのサブパッケージとは何ですか? パッケージ+サブパッケージの一覧にマクロが展開されていますか?サブパッケージは、-nを使用して定義することができる、あるいは別のマクロによって定義されるので、私はgrepのを使用したくないRPM:仕様からサブパッケージ名を見つけよう

(それを再evalにつながる)

例:

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

rpmコマンドがこの種のクエリをサポートしているとは思えません。 –

答えて

0

まあ、私は、SEDのビットを使用しますが、私も最初のマクロをアンロールするrpmspecを使用するので、これはかなりOKでなければなりません:それは動作するようにbasenameコールが必要になること

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

注意そうでなければ、かなりの誤り耐性があるはずです。

+0

私の作業環境はrpmspecがデフォルトでインストールされていないため、うまくできません(rpm-4.8.0-12.el6.x86_64の場合があります)。 – Caruccio

1

少しのpythonがあなたのために仕事をします。私は(+ Xに設定したファイルと名前specinfo.pyを想定)RPM-4.8はまた、スペックオブジェクトとPythonバインディングを持っていたと確信しています:

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

は、すべてのサブパッケージを取得するために使用することができます。私は一般的に、単純なフォームを使用

python specinfo.py <spec file> 
0

:あなたは、同じディレクトリ内のスペックファイルでこのコマンドを実行することができます

rpm -q --specfile FILENAME.SPEC 
1

のrpm -q --queryformat = "%{NAME} \ n" は - -specfile project.spec

関連する問題