我怎么知道spec文件的子包是什么? 有没有宏扩展到包+子包列表?
我不想使用grep,因为子包可以使用-n定义,甚至可以由另一个宏定义(这会导致重新评估它)
示例:
$ rpmbuild project.spec --eval '%packages_list'
答案 0 :(得分:1)
一点点python将为你完成这项工作。我确信rpm-4.8也有与spec对象的python绑定(假设一个带有+ x set和name specinfo.py的文件):
#!/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>
答案 1 :(得分:1)
rpm -q --queryformat =&#34;%{NAME} \ n&#34; --specfile project.spec
答案 2 :(得分:0)
嗯,我使用了一些sed,但是因为我还使用rpmspec
来首先展开宏,所以这应该是相当不错的:
$ export SPEC_FILE=maven-surefire.spec
$ rpmspec -P $SPEC_FILE | grep '^%package' | sed "s/-n //;t end;s/^/${SPEC_FILE/.spec}-/;:end;s/%package //"
请注意,需要basename
调用才能使用路径,否则应该具有很强的错误恢复能力。
答案 3 :(得分:0)
我通常使用简单的形式:
rpm -q --specfile FILENAME.SPEC