16.4.1 Чтение хэдера из файла пакета

Подобно рассмотренным функциям C, например, rpmReadPackageFile, Python API предоставляет удобный способ чтения для создания объекта хэдера из файла rpm-пакета. Метод hdrFromFdno считывает хэдер из файла в соответствии с переданным дескриптором:

h = ts.hdrFromFdno(fdno)

Метод hdrFromFdno опирается на низкоуровневый дескриптор вместо высокоуровневого объекта файла языка Python. В RPM библиотеке C FD_t - это FILE**.

Следующий пример показывает функцию, открывающую файл, считывающую хэдер и затем закрывающую файл.

def readRpmHeader(ts, filename):

""" Read an rpm header. """

fd = os.open(filename, os.O_RDONLY)

h = ts.hdrFromFdno(fd)

os.close(fd)

return h

ts = rpm.TransactionSet()

h = readRpmHeader( ts, 'n-r-v.rpm' )

Метод hdrFromFdno обрабатывает ряд исключений, основываясь на событиях, диагностируемых при открытии или чтении файла:

def readRpmHeader(ts, filename):

""" Read an rpm header. """

fd = os.open(filename, os.O_RDONLY)

h = None

tryL

h = ts.hdrFromFdno(fd)

except rpm.error, e:

if str(e) == "public key not available":

print str(e)

if str(e) == "public key not trusted":

print str(e)

if str(e) == "error reading package header":

print str(e)

h = None

os.close(fd)

return h

ts = rpm.TransactionSet()

h = readRpmHeader( ts, 'n-r-v.rpm' )

Решение о том, будут ли исключения прерывать исполнение кода, зависит от разработчика.

Далее - Установка флагов верификации
Назад - Уточнение запросов
Содержание