Программа rpm
Название этой программы (или команды) является аббревиатурой от Redhat Package Manager. Такая расшифровка дается в большинстве книг и руководств по Linux и кажется мне более правильной и логичной, хотя в главе 6 "The Official Red Hat Linux Reference Guide" говорится: "The RPM Package Manager (RPM), is an open packaging system available for any-one to use, and works on Red Hat Linux as well as other Linux and UNIX systems", т. е. предлагается рекурсивная расшифровка названия RPM, подобная расшифровке GNU - GNU is Not Unix).
Программа rpm в некотором смысле аналогична программам типа setup wizard для MS Windows. Преимуществом использования этой программы по сравнению с установкой tar gz архивов является то, что она автоматически проделает все необходимые действия по установке ПО: создаст необходимые каталоги, распределит по ним файлы, создаст ссылки. Кроме того, она может быть использована не только для установки нового пакета, но и для обновления версий ПО, получения перечней установленного ПО и проверки установки, а также для деинсталляции отдельных пакетов (например, если после периода пробной работы с программой вы решили отказаться от ее дальнейшего использования). С помощью той же программы rpm можно самому создать пакет формата rpm, однако для начинающих лучше, наверное, этим не заниматься, а воспользоваться готовыми rpm-пакетами.
Rpm-пакеты - это специальным образом подготовленные архивы, предназначенные для обработки программой rpm. Название rpm-пакетов оканчивается на суффикс .rpm, например, xzip-180-1.i386.rpm или xzip-180-1.src.rpm. Как видите, перед суффиксом .rpm стоит еще один суффикс. Если это .i386, .i686 или .i586, то в пакете находятся исполняемые файлы (оптимизированные для соответствующего типа процессора), а если этот суффикс .src, - то в пакете исходные тексты, которые после установки еще надо скомпилировать. Обычно как на установочных компакт-дисках, так и в интернет-каталогах rpm-пакеты с исполняемыми файлами располагаются в каталогах с названием RPMS, а rpm-пакеты с исходными текстами - в подкаталогах SRPMS. Часто встречаются также rpm-пакеты с суффиксом .noarch.rpm, содержащие файлы, которые просто без всякой дополнительной обработки устанавливаются в соответствующие каталоги (например, файлы страниц интерактивного руководства man). И, наконец, если rpm-пакет рассчитан на версию Linux, предназначенную для другой аппаратной платформы (AMD, DEC Alpha, SUN Sparc, MIPS, PowerPC), это тоже будет отображено в имени пакета: вместо i386 в суффиксе будет стоять, соответственно, athlon, alpha, sparc, mips или ppc.
В Интернете rpm-пакеты можно найти на различных серверах. По моему опыту наиболее удобным сервером в Интернете для поиска rpm-архивов является сервер http://rufus.w3.org (недаром он имеет другое имя http://rpmfind.net). На нем установлена поисковая система, которая позволяет упорядочивать список пакетов наиболее удобным для вас способом:
- по именам пакетов;
- по дистрибутивам;
- по группам приложений;
- по датам;
- по поставщикам (производителям) ПО.
Общий объем архива rpm-пакетов на этом сервере составляет более 66 Гигабайт. Очень богатые архивы хранят также два ftp-сервера в России: ftp://ftp.chg.ru/pub/Linux и ftp://ftp.nc.orc.ru/.
Необходимо только заметить, что если для перекачки пакетов из Интернета вы используете компьютер, работающий под Windows 95, то все имена пакетов у вас будут, скорее всего, искажены. Дело в том, что Windows "не любит" имена, в которых несколько точек (например, glib-1.0.6-3.i386.rpm) и заменит "лишние", по его мнению, точки на знаки подчеркивания - glib-1_0_6-3_i386.rpm. Так что после получения пакета (при переносе его на ПК с ОС Linux) желательно эти "исправления" устранить, вернувшись к исходным именам UNIX. Правда, делать это не обязательно, поскольку внутри rpm-пакет все равно правильно идентифицирован, но для единообразия и облегчения поиска файлов все же целесообразно.
Общий объем архива rpm- пакетов на этом сервере составляет более 66 Гигабайт. Очень богатые архивы хранят также два ftp-сервера в России: ftp://ftp.chg.ru/pub/Linux и ftp://ftp.nc.orc.ru/.
Необходимо только заметить, что если для перекачки пакетов из Интернета вы используете компьютер, работающий под Windows 95, то все имена пакетов у вас будут, скорее всего, искажены. Дело в том, что Windows "не любит" имена, в которых несколько точек (например, glib-1.0.6-3.i386.rpm) и заменит "лишние", по его мнению, точки на знаки подчеркивания - glib-1_0_6-3_i386.rpm. Так что после получения пакета (при переносе его на ПК с ОС Linux) желательно эти "исправления" устранить, вернувшись к исходным именам UNIX. Правда, делать это не обязательно, поскольку внутри rpm-пакет все равно правильно идентифицирован, но для единообразия и облегчения поиска файлов все же целесообразно.
Итак, вы нашли и скачали rpm-архив с исполняемой версией нужного вам пакета. Если вы ставите совершенно новый пакет (у вас не было на компьютере предыдущих версий этого ПО), то для установки пакета из этого архива достаточно перейти в тот каталог, где находится архив, и дать команду (для самых нетерпеливых: не спешите выполнять эту рекомендацию, прочитайте еще хотя бы пару абзацев)
[root]# rpm -i имя_rpm-архива
Если у вас была установлена предыдущая версия пакета, то в простейшем случае надо дать команду следующего формата:
[root]# rpm -U --force имя_rpm-архива
Здесь параметр -U говорит программе, что надо произвести обновление (upgrade) пакета, а опция --force требует безусловно (и без лишних вопросов) обновить все входящие в пакет файлы. Заметьте, что это очень сильное требование, и в некоторых случаях может быть лучше сохранить какие-то (например, конфигурационные) файлы от предыдущей версии. Если установка проходит нормально, и никаких дополнительных сообщений не появляется, то после завершения работы программы (после появления приглашения оболочки) вы можете пользоваться вновь установленным пакетом.
К сожалению, не всегда все так просто. Приведу конкретный пример. У меня был установлен RedHat Linux версии 5.2, причем программа Midnight Commander (mc) была версии 4.1.36. На ftp-сервере я увидел версию 4.5.30 этой программы (пакет mc-4.5.30-12.i386.rpm) и, естественно, решил ее поставить. Однако оказалось, что для этого необходимо установить еще 4 других пакета, о чем rpm мне и сообщила:
ошибка: неудовлетворенные зависимости: redhat-logos нужен для mc-4.5.30-12 libglib-1.2.so.0 нужен для mc-4.5.30-12 libc.so.6(GLIBC_2.1) нужен для mc-4.5.30-12 libc.so.6(GLIBC_2.0) нужен для mc-4.5.30-12
Это не удивительно, если вы вспомните, что и при первоначальной установке Linux программа инсталляции тоже проверяла взаимозависимости пакетов и предлагала установить недостающие. Однако в случае инсталляции с CD-ROM все необходимые пакеты находятся на том же диске, а здесь мне пришлось вначале поискать нужные пакеты. Два пакета (redhat-logos-1.0.5-1.noarch.rpm и glibc-2.1.1-6.i386.rpm) я нашел без труда, после чего rpm перестала просить и GLIBC_2.0. А вот с libglib.so.1 вышло сложнее. Во-первых, я никак не мог найти пакета с таким названием. Как оказалось, такого пакета и не существует, файл libglib.so.1 входит в состав пакета glib-1.0.6-3.i386.rpm.
Программа rpm позволяет выяснить, какие файлы установит тот или иной пакет. Для этого надо дать следующую команду (только учтите, что текущим должен быть каталог, содержащий интересующий вас пакет):
[root]# rpm -qpl имя_rpm-архива
А для получения информации о том, для чего служит ПО, содержащееся в rpm-пакете, используйте команду
[root]# rpm -qpi имя_rpm-архива
Дело в том, что файлы RPM кроме собственно архива файлов содержат информацию о пакете, включая имя, версию и краткое описание. С помощью той же программы rpm вы можете просмотреть эту дополнительную информацию. Например, для пакета glib-1.0.6-3.i386.rpm вывод команды
[root]# rpm -qpi glib-1.0.6-3.i386.rpm
будет примерно таким:
Name : glib Relocations: (not relocateable) Version : 1.0.6 Vendor: Red Hat Software Release : 3 Build Date: Суб 10 Окт 1998 04:49:03 Install date: (not installed) Build Host : porky.redhat.com Group : Libraries Source RPM: glib-1.0.6-3.i386.rpm Size : 55305 Packager : Red Hat Software <bug@redhat.com> Summary : Handy library of utility functions Description : Handy library of utility functions. Development libs and headers are in gtk+-devel.
Если дать команду:
[root]# rpm -qpl glib-1.0.6-3.i386.rpm
будет выдан список входящих в пакет файлов с указанием того, куда они будут установлены:
/usr/lib/libglib.so.1 /usr/lib/libglib.so.1.0.6
RPM также предоставляет мощную систему запросов по установленным в системе пакетам. По команде
[root]# rpm -qа
вы получите перечень всех установленных в системе пакетов (перечень будет очень большим, так что лучше сразу направить вывод в фильтр more или в файл, который потом просматривать с помощью less или встроенной программы просмотра из оболочки Midnight Commander). Вы можете искать информацию об отдельном пакете или об отдельных файлах. Например, вы можете легко найти, какому пакету принадлежит файл и откуда появился. Команда
[root]# rpm -qf /etc/bashrc
сообщит:
bash-1.14.7-16
Если вы беспокоитесь о том, что случайно удалили важный файл из установленного пакета, просто проверьте это:
[root]# rpm -Va
Вы будете оповещены об любых аномалиях. Потом можно переустановить пакет, если это необходимо. Любые конфигурационные файлы будут сохранены.
Как видите, rpm это очень полезная утилита, и у нее имеется много разных опций. Выше приведено только несколько примеров. Всего rpm имеет 16 основных режимов работы, которые можно объединить в 6 групп (после двоеточия приводится формат команды для соответствующего режима).
Запросы
- Запрос: rpm [--query] [queryoptions]
- Показать метки запросов (Querytags): rpm [--querytags]
Установка и поддержка установленных пакетов
- Установка: rpm [--install] [installoptions] [package_file]+
- Обновление: rpm [--freshen|-F] [installoptions] [package_file]+
- Деинсталляция: rpm [--uninstall|-e] [uninstalloptions] [package]+
- Проверка: rpm [--verify|-V] [verifyoptions] [package]+
Подписи (пакеты подписываются электронной цифровой подписью в формате PGP, с целью обеспечения неизменяемости и сохранения авторства пакетов).
- Проверка подписи: rpm [--verify|-V] [verifyoptions] [package]+
- Переподписывание: rpm [--resign] [package_file]+
- Добавление подписи: rpm [--addsign] [package_file]+
Работа с базой
- Инициализация базы: rpm -i [--initdb]
- Обновление базы (Rebuild Database): rpm -i [--rebuilddb]
Создание rpm-пакетов
- Создать пакет: rpm [-b|t] [package_spec]+
- Перекомпилировать пакет: rpm [--rebuild] [sourcerpm]+
- Скомпилировать пакет из tar-архива: rpm [--tarbuild] [tarredsource]+
Разное
- Показать конфигурацию программы rpm: rpm [--showrc]
- Задать пользователей: rpm [--setperms] [package]+
- Задать группы: rpm [--setgids] [package]+
Подробное описание всех возможностей команды rpm выходит за рамки нашей книги Его вы можете найти в RPM-HOWTO, на страницах man и info. Кроме того, большой раздел о программе rpm имеется в книге [П1.3].
Примечание Как и другие программы для Linux, программа rpm постоянно развивается и совершенствуется. При этом при замене версии этой программы могут возникнуть трудности с установкой пакетов, созданных в предыдущих версиях. Так было, например, при переходе с третьей на четвертую версию rpm. Так что надо использовать пакеты, соответствующие установленной у вас версии программы. |