Команда rpm: очень краткое введение

Алексей Федорчук

Утилита rpm предназначена для работы с пакетами в одноимённом формате — поиска, получения информации, установки, обновления и удаления с отслеживанием (но не разрешением) их зависимостей. В давние времена она была благословением и проклятием начинающих пользователей дистрибутива Red Hat, его клонов и дериватов.

Благословением — потому что освобождала от необходимости самостоятельной компиляции: практически все разработочик из числа не брезговавших распространением своих пакетов в бинарном виде, собирали свои произведения в этом формате, а службы вроде http://rpmfind.net позволяли легко отыскать их на просторах Сети. Помню, в те годы имела хождение такая жизненная максима:

с помощью rpm и Инета любые дистрибутивы можно сделать близнецами-братьями за одну ночь

Проклятием — потому что, отслеживая зависимости пакетов при установке и удалении, утилита rpm отнюдь не занималась их разрешением, а только сообщала об обнаруженной крамоле, причём в достаточно неудобопонимаемой форме.

Те времена канули в Лету: наступил век пакетных репозиториев и средств для работы с ними, таких, как apt-rpm, urpmi и, наконец, yum — главный герой нашего цикла. Каковые и берут на себя заботу по рутинному манипулированию пакетами. Однако утилита rpm до сих пор остаётся самым простым средством для операций с единичными пакетами, особенно не входящими в официальные репозитории. А в некоторых случаях — например, при подключении репозиториев сторонних — она оказывается практически незаменимой.

Так что уделим толику времени знакомству с её базовыми, наиболее востребованными в повседневной жизни, функциями. Это просто краткий конспект для практического применения. Причём ориентированный на тех, кто ранее дела с rpm-based системами не имел. Тех, кто будет из зала кричать — давай подробности, авансом отсылаю к тёте Мане, она за всё расскажет.

Вообще-то, утилита rpm, подобно dpkg в Deb-based дистрибутивах, — лишь одна из представительниц целого семейства, разрабатываемого, вместе с одноимённым форматом, в рамках самостоятельного проекта. Из числа дополнительных утилит стоит упомянуть rpm-build — средство для создания собственных пакетов, и rpm2html — утилиту для извлечения метаинформации из пакетов и представления её в человеческом виде. Надеюсь, что со временем дело дойдёт и до них. Но в настоящей заметке речь пойдёт только о собственно rpm.

В сущности, в обыденной жизни rpm служит преимущественно трём целям:

  • проверке, установлен ли пакет;
  • установке нужного единичного пакета при отрицательном ответе, и обновлении его — при положительном (если обновление доступно, конечно);
  • удалении того же единично установленного пакета.

наличие пакета в системе проверяется так:

$ rpm -qa pkgname

где -q (или --query) — основная опция запроса, а -a (или --all) предписывает запрос ко всем наличным пакетам. Если пакет установлен в системе, ответом на запрос будет

$ rpm -qa opera
opera-10.00-4440.gcc4.shared.qt3.x86_64

если нет — возвращение приглашения командной строки.

Отсутствующий пакет устанавливаем так:

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

где -i (или --install) — основная опция установки.

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

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

где -F (или --freshen) предписывает освежить существующий пакет.

Суммарная форма установки —

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

При этом существующий пакет будет обновлён, а отсутствующий — установлен.

Ко всем основным опциям установки и обновления можно добавить дополнительные: -v (или --verbose), выводящую сведения о ходе процесса, и -h (или --hash), обеспечивающую удобство представления вывода.

Опции установки или обновления требуют указания полного имени файла пакета и пути к нему.

Удаление единичного пакета ничуть не сложнее:

# rpm -e pkgname

Здесь достаточно базового имени пакета.

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

Вот и всё, что на начальном этапе нам потребуется знать о команде rpm. Заинтересованным в деталях дорога, как обычно, к тёте Мане:

$ man rpm

Где и будет рассказано о бессчётных опциях этой утилиты.

Добавить комментарий