6.2 Транзакции с командой rpm

Все, что нужно сделать для формирования транзакции - это передать в качестве аргумента более чем одно имя пакета в командную строку rpm. Например, для формирования транзакции для установки трех пакетов, используйте команду, подобную следующей:

rpm -ihv package1.rpm package2.rpm package3.rpm

Если в отношении какого-либо пакета из списка произойдут ошибки, rpm не будет устанавливать ни один пакет. Принцип - или все пакеты должны быть установлены, или ни одного.

Этот путь весьма пригоден в сложных случаях, например, если есть большая группа пакетов, выполняющих одну задачу. Скажем, имеется интегрированная среда разработки (IDE) с разными отладчиками, компиляторами и инструментами разработки. Если устанавливать такую группу в рамках транзакции, вы будете уверены, что все необходимое установлено.

В качестве примера установим пакет gnorpm, предоставляющий графический фронтенд для утилиты rpm и пакет rpmrebuild, который позволяет собрать пакет из файлов уже установленного пакета. Установим эти пакеты в рамках транзакции:

# rpm -ihv gnorpm-0.9-1.i386.rpm rpmrebuild-1.0-0.noarch.rpm

Preparing...
########################################### [100%]

package gnorpm-0.9-1 is already installed

Пакет rpmrebuild может быть установлен, но поскольку пакет gnorpm уже установлен и выдана ошибка, то вся транзакция отменена. Ни один пакет не будет установлен. Для проверки того, что пакеты не были установлены, то есть концепция транзакций работает, как описано, используйте rpm q:

# rpm -q rpmrebuild

package rpmrebuild is not installed

Этот пример показывает, что rpmrebuild не был установлен, хотя может быть установлен изолированно, не в рамках транзакции.

Утилита rpm действует сходным образом и при удалении и при обновлении пакетов. При удалении можно увидеть подобное сообщение об ошибке, если какой-либо пакет не может быть удален:

# rpm -e setup jikes-1.17

error: Failed dependencies:

setup is needed by (installed) basesystem-8.0-1

setup >= 2.0.3 is needed by (installed) initscripts-6.95-1

setup >= 2.5.4-1 is needed by (installed) filesystem-2.1.6-5

setup is needed by (installed) xinetd-2.3.7-2

setup is needed by (installed) dump-0.4b28-4

Пакет setup не может быть удален, так как от него зависят другие пакеты. Можно проверить, что пакет jikes не был удален, не смотря на то, что он не ограничен зависимостями и может быть удален в одиночку:

# rpm -q jikes

jikes-1.17-1

Далее - Идентификаторы транзакций
Назад - Возврат транзакции
Содержание