我怎麼能知道什麼是spec文件的子包? 是否有任何宏擴展到包+子包的列表?RPM:查找spec中的子包名稱
我不想用grep,因爲子包可以使用-n甚至由另一個宏定義(這會導致重新EVAL吧)
例子來進行說明:
$ rpmbuild project.spec --eval '%packages_list'
我怎麼能知道什麼是spec文件的子包? 是否有任何宏擴展到包+子包的列表?RPM:查找spec中的子包名稱
我不想用grep,因爲子包可以使用-n甚至由另一個宏定義(這會導致重新EVAL吧)
例子來進行說明:
$ rpmbuild project.spec --eval '%packages_list'
好,我用了一下SED,但因爲我還用rpmspec
先展開宏這應該還算OK:
$ 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
呼叫工作與路徑,但否則應該是相當錯誤彈性。
嗯,對我來說不可行,因爲我的工作環境默認沒有安裝rpmspec(可能是因爲它是rpm-4.8.0-12.el6.x86_64?) – Caruccio
python的一小部分將爲你做的工作。我相信RPM的4.8也有蟒蛇與規格對象綁定(假設與+ X設置和名稱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>
我一般用簡單的形式:您可以在規範文件中相同的目錄中運行此命令
rpm -q --specfile FILENAME.SPEC
轉-q --queryformat = 「%{NAME} \ n」 - -specfile project.spec
我不相信rpm命令支持這種查詢。 –