Утилита rpm: очень краткое введение

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

Благословением -- потому что освобождала от необходимости самостоятельной компиляции: практически все разработчики из числа не брезговавших распространением своих пакетов в бинарном виде, собирали их в rpm-формате, а службы вроде 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

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


Теги: ,