Все, что нужно сделать для формирования транзакции - это передать в качестве аргумента более чем одно имя пакета в командную строку 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 |
Пакет rpmrebuild может быть установлен, но поскольку пакет gnorpm уже установлен и выдана ошибка, то вся транзакция отменена. Ни один пакет не будет установлен. Для проверки того, что пакеты не были установлены, то есть концепция транзакций работает, как описано, используйте rpm q:
# rpm -q rpmrebuild |
Этот пример показывает, что rpmrebuild не был установлен, хотя может быть установлен изолированно, не в рамках транзакции.
Утилита rpm действует сходным образом и при удалении и при обновлении пакетов. При удалении можно увидеть подобное сообщение об ошибке, если какой-либо пакет не может быть удален:
# rpm -e setup jikes-1.17 |
Пакет setup не может быть удален, так как от него зависят другие пакеты. Можно проверить, что пакет jikes не был удален, не смотря на то, что он не ограничен зависимостями и может быть удален в одиночку:
# rpm -q jikes |
Далее - Идентификаторы транзакций
Назад - Возврат транзакции
Содержание