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

Индекс

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' )

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

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