Новелла девяносто шестая, рассказывающая о режимах установки и обновления утилиты rpm

Установка и обновление пакетов — наиболее часто используемые режимы, и при этом тесно связанные между собой. Основными их опциями являются:

  • -i (или --install)  — установка пакета, отсутствующего в системе;
  • -F (или —freshen)  — обновление установленного пакета до более “свежей” версии;
  • -U (или )  — обобщённая опция установки и обновления: при её использовании установленный пакет будет обновлён, а не установленный — инсталлирован.

Важно, что сферы действия опций -i и -F строго разграничены: команда с указанием первой откажется исполняться, если в системе имеется старая версия одноимённого пакета. И наоборот — команда при второй опции даст сообщение об ошибке, если предшествующая версия в системе не установлена. Поэтому обобщённая опция -U применяется чаще всего. Очевидно, что для успешного выполнения команд с любой их этих опций требуются привилегии администратора.

Установка заведомо отсутствующего пакета обычно выполняется командой

# rpm -ihv path2/pkgname.X.Y.rpm

если он находится на локальной машине, или

# rpm -ihv http://URL/pkgname.X.Y.rpm

если пакет устанавливается из сетевого хранилища.

Обновление уже установленного пакета при наличии более новой версии производится посредством команды

# rpm -Fhv path2/pkgname.X.Y.rpm

Использование обобщённой опции -U в форме

# rpm -Uhv path2/pkgname.X.Y.rpm

как уже сказано, приведёт к установке отсутствующего пакета и обновлению — установленного.

Дополнительные опции -v и -h обеспечивают вывод подробных сведений о ходе установки и показывают степень её выполнения символами #, соответственно.

Аргументов, то есть устанавливаемых или обновляемых пакетов, в общем случае можно задать сколько угодно. Более того, в некоторых случаях указание в команде нескольких аргументов является необходимостью. Ранее я уже говорил, что утилита rpm не просто устанавливает пакеты, но и проверяет их зависимости. Хотя, с сожалению, не разрешает их, а только рапортует о нарушениях. Например, попытка “в лоб” установить kdebase выдаст длиннющий список неудовлетворённых зависимостей.

Как разруливать такую ситуацию — ясно: ставить пакеты со  сложными зависимостями непосредственно через rpm — дело неблагодарное, на сей предмет существуют продвинутые пакетные менеджеры, например, zypper.

Однако бывают ситуации более иные: вроде бы простой пакет при попытке установки требует как зависимость другой. А тот, в свою очередь, отказывается устанавливаться, так как жалуется на отсутствие первого. Вот в таких-то случаях и требуется указание всех взаимозависимых пакетов в качестве аргументов одной команды. Причём, что характерно, порядок имён не играет никакой роли — если все взаимозависимые пакеты указаны, то все они и будут благополучно установлены.

Подчас случается, что rpm при нарушении зависимостей возвращает имя не требуемого для их разрешения пакета, а конкретного недостающего файла, например, некоего библиотечного libname.so. И тогда тоже проще обратиться к системе zypper: как я уже говорил, утилита rpm эффективна при работе с пакетами, не имеющими сложных зависимостей.

Очень важна также опция --force: в сочетании с опцией -i она приводит к принудительной установке пакета, уже имеющегося в системе. Это бывает необходимо при повреждении пакета. Кроме того, она требуется при откате на более старую версию.

Прочие опции утилиты rpm подробно описаны на её man-странице.


Назад | К содержанию | Вперёд