Алексей Федорчук
Утилита rpm
предназначена для работы с пакетами в одноимённом формате — поиска, получения информации, установки, обновления и удаления с отслеживанием (но не разрешением) их зависимостей. В давние времена она была благословением и проклятием начинающих пользователей дистрибутива Red Hat, его клонов и дериватов.
Благословением — потому что освобождала от необходимости самостоятельной компиляции: практически все разработочик из числа не брезговавших распространением своих пакетов в бинарном виде, собирали свои произведения в этом формате, а службы вроде
с помощью 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
Где и будет рассказано о бессчётных опциях этой утилиты.