16.3.4 Запросы о конкретных пакетах

Когда для объекта хэдера вызывается dbMatch, пустые параметры означают, что надо обойти весь список установленных пакетов, имеющийся в БД RPM. Также можно запросить информацию об отдельном пакете (пакетах), используя dbMatch. Для этого в качестве параметров необходимо передать имя тега и его значение:

mi = ts.dbMatch(tag_name, value)

Например, запрос всех пакетов, имеющих в имени шаблон sendmail, будет выглядеть так:

mi = ts.dbMatch('name', 'sendmail')

Вызов dbMatch возвращает rpmdbMatchIterator. Вы можете запросить сформировать итератор по нескольким тегам, но наиболее часто встречаются запросы по шаблону имени.

Ниже показан пример скрипта (rpmq.py), который запрашивает пакеты с определенным шаблоном в имени и затем выводит имя, версию и релиз всех пакетов, которые соответствуют шаблону:

#!/usr/bin/python

# Acts like rpm -q and lists the N-V-R for installed

# packages that match a given name.

# Usage:

# python rpmq.py package_name

import rpm, sys

ts = rpm.TransactionSet()

mi = ts.dbMatch( 'name', sys.argv[1] )

for h in mi:

print "%s-%s-%s" % (h['name'], h['version'], h['release'])

При вызове этого скрипта ему нужно передать имя пакета, которое интерпретатор Python будет хранить в sys.argv[1] в вызове dbMatch:

$ python rpmq.py sendmail

sendmail-8.12.5-7

Далее - Вывод информации о пакете
Назад - Работа с хэдером пакета
Содержание