16.3.1 Доступ к БД RPM

Сеты транзакций предоставляют ряд методов работы с БД RPM на уровне движка базы данных. Используйте эти методы, если нуждаетесь во взаимодействии с БД в целом, в отличие от доступа к данным по какому-то одному пакету. Скажем, с помощью этих методов можно инициализировать или перестроить базу. Кроме того, можно получать доступ к альтернативным БД помимо БД по умолчанию.

16.3.1.1 Установка расположения БД
Сет транзакции открывает БД RPM основываясь на ее расположении по умолчанию. Для задания альтернативного расположения БД используется addMacro, как показано ниже:

rpm.addMacro("_dbpath", path_to_rpm_database)

Возможна работа с несколькими БД путем определения макроса
_dbpath, создания сета транзакции и последующего удаления макроса. После такой последовательности можно создать другой сет транзакции для БД по умолчанию. Например:

# Open the rpmdb-redhat database

rpm.addMacro("_dbpath", "/usr/lib/rpmdb/i386-redhat-linux/redhat")

solvets = rpm.TransactionSet()

solvets.openDB()

rpm.delMacro("_dbpath")

# Open default database

ts = rpm.TransactionSet()

Этот пример использует пакет rpmdb-redhat, который содержит данные обо всех пакетах Red Hat. Прямой вызов openDB открывает БД RPM. В большинстве случаев в скриптах Python прямой вызов openDB не требуется. Вместо этого сет транзакции откроет БД если это необходимо.

Вызов delMacro удаляет макрос, позволяя следующему вызову TransactionSet использовать БД по умолчанию.

Не вызывайте closeDB в сете транзакции. Этот метод действительно закроет БД, но также закроется возможность автоматического открытия при необходимости.

16.3.1.2 Инициализация, перестройка и верификация БД
Сет транзакции предоставляет метод initDB для инициализации новой БД RPM. Действие сходно с действием команды rpm --initdb:

ts.initDB()

Метод rebuildDB регенерирует БД, подобно команде rpm --rebuilddb:

ts.rebuildDB()

Метод rebuildDB перестраивает индекс базы.

Метод verifyDB проверяет читаемость базы и индексов функциями библиотеки Berkeley DB:

ts.verifyDB()

Вызов этого метода - то же самое, что вызов команды db_verify для каждого файла БД в каталоге /var/lib/rpm.

С момента создания сета транзакции мы получаем возможность запрашивать БД RPM.

Далее - Запросы к БД RPM
Назад - Программирование с БД RPM
Содержание