16.6.2 Элементы транзакции

Сеты транзакций состоят из элементов транзакций. Элемент транзакции составляет одну элементарную часть транзакции и содержит один пакет для одной операции (установка или удаление) в каждом сете. Таким образом: один элемент приходится на один пакет на одну операцию. Можно обходить сет транзакции для получения каждого элемента. Имея элемент, можно вызывать его методы для получения зависимостей или проверки записей хэдера.

Таблица ниже показывает информационные методы, которые можно вызывать для элемента транзакции. Большинство методов возвращает единственное значение.

Метод

Возвращает

A

Возвращает архитектуру пакета

E

Возвращает эпоху

O

Возвращает операционную систему

R

Возвращает номер релиза

V

Возвращает версию

N

Возвращает имя пакета

NEVR

Возвращает имя-эпоху-версию-релиз

DS

Возвращает сет зависимости пакета для указанного тэга

FI

Возвращает сет информации о пакете

Для сложных проверок метод DS возвращает сет зависимости пакета для заданного имени поля:

ds = te.DS(tag_name)

Возможные поля (значения tag_name): Providename, Requirename, Obsoletename или Conflictname. Например:

ds = te.DS('Requirename')

Метод FI возвращает сет информации о пакете:

fi = te.FI(tag_name)

Для метода FI необходимо передавать в качестве tag_name 'Basenames'.

Пример ниже (te.py) показывает, как обходить сет транзакции для получения элементов транзакции:

#!/usr/bin/python

# Adds all package files on command line to a transaction

# and prints out the transaction elements.

# Usage:

# python te.py rpm_file1.rpm rpm_file2.rpm ...

#

import rpm, os, sys

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

# Set to not verify DSA signatures.

ts.setVSFlags(rpm._RPMVSF_NOSIGNATURES)

for filename in sys.argv[1:]:

h = readRpmHeader(ts, filename)

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

ts.addInstall(h, filename, 'i')

print "This will install:"

for te in ts:

print "%s-%s-%s" % (te.N(), te.V(), te.R() )

ts.check()

ts.order()

print "This will install:"

for te in ts:

print "%s-%s-%s" % (te.N(), te.V(), te.R() )

Скрипт te.py устанавливает транзакцию и печатает элементы, никогда не выполняя транзакцию. Цель в данном случае - показать, что находится в транзакции. Вторая группа печатного вывода показывает результаты проверок и сортировки порядка транзакции.

Далее - Проверка и переопределение порядка элементов транзакции
Назад - Построение сета транзакции
Содержание