Найти зависимости rpm с помощью Python yum / rpm API? - PullRequest
0 голосов
/ 02 марта 2012

Кажется, он должен быть доступен, но я просто не могу его найти.

Что-то вроде:

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

1 Ответ

5 голосов
/ 25 апреля 2012

В следующем сценарии перечислены все требования из пакета, предоставленного в командной строке (полный путь к файлу 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
...