2012-03-02 60 views
0

它似乎應該可用,但我似乎無法找到它。使用python yum/rpm API查找rpm相關性?

喜歡的東西:

pkg = rpm.Package(name="some package") 
dependencies = pkg.dependencies() 

是否有可用這樣的事情,這將是比我現在在做清潔?

目前,我與包裹的子rpm命令手動解析輸出:

cmd = "rpm -qRp {file} | sort | uniq".format(file=filename) 
cmd_output = subprocess.check_output(cmd, shell=True) 
# ... long parse of cmd_output 

回答

5

繼素文字將列出所有從設置在命令行(完整路徑rpm文件)的軟件包,要求:

import os 
import rpm 
import sys 

ts = rpm.TransactionSet() 
fd = os.open(sys.argv[1], os.O_RDONLY) 
h = ts.hdrFromFdno(fd) 
os.close(fd) 

for dep in h[rpm.RPMTAG_REQUIRENAME]: 
    print dep 

或備選地與封裝在rpm數據庫工作:

import os 
import rpm 
import sys 

ts = rpm.TransactionSet() 
mi = ts.dbMatch('name', sys.argv[1]) 
for ind in range(mi.count()): 
    h = mi.next() 
    for dep in h[rpm.RPMTAG_REQUIRENAME]: 
     print dep