The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Документация для Linux" / Оглавление документа

16.3.2 Запросы к БД RPM

Для создания шаблонного итератора используется метод dbMatch экземпляра сета транзакции. Подобно C API шаблонный итератор позволяет программе перебирать пакеты, которые соответствуют шаблону по заданному критерию.

Вызов dbMatch без параметров означает, что будут перебираться все установленные пакеты. Базовый синтаксис:

import rpm

ts = rpm.TransactionSet()

mi = ts.dbMatch()

for h in mi:

# Do something with header object...

В этом примере вызов dbMatch возвращает шаблонный итератор. Цикл for обходит весь итератор, возвращая один объект хэдера за раз.

Кроме данного синтаксиса можно вызывать метод next для получения следующего объекта хэдера. Например:

import rpm

ts = rpm.TransactionSet()

mi = ts.dbMatch()

while mi:

h = mi.next()

# Do something with the header object

Прямой вызов метода next в будущих версиях Python API поддерживаться не будет.

Следующий листинг показывает пример скрипта на Python (rpmqa.py), который выводит имя, версию и релиз для всех установленных пакетов.

#!/usr/bin/python

# Acts like rpm -qa and lists the names of all the installed packages.

# Usage:

# python rpmqa.py

import rpm

ts = rpm.TransactionSet()

mi = ts.dbMatch()

for h in mi:

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

При вызове скрипта мы увидим примерно следующий вывод (часть вывода убрана ради экономии места):

$ python rpmqa.py

libbonoboui-2.0.1-2

attr-2.0.8-3

dhclient-3.0pl1-9

file-3.37-8

hdparm-5.2-1

ksymoops-2.4.5-1

imlib-1.9.13-9

logwatch-2.6-8

mtr-0.49-7

openssh-clients-3.4p1-2

pax-3.0-4

python-optik-1.3-2

dump-0.4b28-4

sendmail-8.12.5-7

sudo-1.6.6-1

mkbootdisk-1.4.8-1

telnet-0.17-23

usbutils-0.9-7

wvdial-1.53-7

docbook-dtds-1.0-14

urw-fonts-2.0-26

db4-utils-4.0.14-14

libogg-devel-1.0-1

Если на скрипт установлены права выполнения, можно избежать вызова интерпретатора вместе с именем скрипта:

$ ./rpmqa.py

Далее - Работа с хэдером
Назад - Доступ к БД RPM
Содержание




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру