16.3.3 Работа с хэдером пакета
Индекс16.3.3 Работа с хэдером пакета
16.3.3.1 Класс hdr
Получить запись из объекта хэдера можно, используя возможности Python для работы со словарями. Это гораздо удобнее, чем вызов headerGetEntry в C-программе. Базовый синтаксис доступа к записи:
value = h['tag_name'] |
Например, для получения имени пакета делаем так:
name = h['name'] |
Также можно использовать стек предопределенных имен тэгов, которые использует C API. Эти константы определены в модуле rpm и их можно задействовать таким образом:
name = h[rpm.RPMTAG_NAME] |
Для записей хэдера, содержащих массив строк, например, список файлов пакета, данные, возвращаемые методом будут представлять собой список Python:
print "Files:" |
Кроме того, можно использовать file info для организации более компактного кода. Например:
print "Files:" |
Зависимости, возможности, несовместимости и конфликты всякий раз получаются как три отдельных, но ссылающихся друг на друга списка. Например, три списка для зависимостей, три для возможностей и так далее. Эту информацию можно извлекать, используя сет зависимости таким образом:
print h.dsFromHeader('providename') |
16.3.3.2 Вывод информации с помощью sprintf
Кроме возможностей Python по работе со словарями для форматирования вывода можно использовать метод sprintf, при этом применяется в точности такой же синтаксис, как для установки формата запросов при запуске утилиты rpm в режиме запросов:
h.sprintf("%{tag_name}") |
Можно добавлять специальные директивы форматирования к имени тега:
print "Header signature: ", h.sprintf("%{DSAHEADER:pgpsig}") |
Эти подходы можно включать в пользовательские функции, выводящие записи хэдера со специфическим форматированием:
def nvr(h): |
Далее - Запросы о конкретных пакетах
Назад - Запросы к БД RPM
Содержание