Необходимость в установке новых программных пакетов
под LINUX возникает в двух основных случаях :
- когда появляется новая версия одного из уже
установленных у Вас пакетов; - когда возникает
необходимость использования какого-то пакета, еще не
установленного в системе.
Во втором случае это может быть один из пакетов,
имеющихся на Вашем установочном диске, но не
установленный в процессе инсталляции. Однако чаще всего
новое ПО Вы будете находить в Интернет, тем более, что
значительная часть этого ПО - бесплатное или условно
бесплатное. Как бы то ни было, но рано или поздно Вы все
равно окажетесь перед необходимостью установить новый
пакет.
Существует две основных формы распространения ПО для
LINUX: в исходных текстах и в виде исполняемых модулей.
И в том и в другом случае пакет ПО может поставляться
либо в виде tar-gz архива, либо в виде rpm-пакета.
Проще всего установить ПО, представленное в виде
rpm-пакета, содержащего исполняемые файлы, этот способ и
рассмотрим первым. Отметим только, что для инсталляции
новых пакетов Вы должны войти в систему как пользователь
root.
RPM.
Название этой программы (или команды) является
аббревиатурой от Redhat Package Manager. Такая
расшифровка дается в большинстве книг и руководств по
Линукс и кажется мне более правильной и логичной, хотя в
главе 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 в некотором смысле аналогична
программам типа 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 или .i586,
то в пакете находятся исполняемые файлы, а если этот
суффикс .src, - то в пакете исходные тексты, которые
после установки еще надо скомпилировать. Обычно и на
установочных компакт-дисках и в Интернет-каталогах
rpm-пакеты с исполняемыми файлами располагаются в
каталогах с названием RPMS, а rpm-пакеты с исходными
текстами - в подкаталогах SRPMS.
В Интернет rpm-пакеты можно найти на различных
серверах.
Необходимо только заметить, что если для перекачки
пакетов из Интернет Вы используете компьютер, работающий
под Windows, то все имена пакетов у Вас будут, скорее
всего, искажены. Дело в том, что Windows "не любит"
имена, в которых несколько точек (например,
glib-1.0.6-3.i386.rpm и заменит "лишние", по его мнению,
точки на подчеркивания - glib-1_0_6-3_i386.rpm). Так что
после получения пакета (при переносе его на ПК с ОС
Linux) надо эти "исправления" устранить, вернувшись к
UNIX-вым именам.
Итак, Вы нашли и скачали rpm-архив с исполняемой
версией нужного Вам пакета. Если Вы ставите совершенно
новый пакет (у Вас не было на компьютере предыдущих
версий этого ПО), то для установки пакета из этого
архива достаточно перейти в тот каталог, где находится
архив, и дать команду (для самых нетерпеливых: не
спешите выполнять эту рекомендацию, прочитайте еще хотя
бы пару абзацев)
rpm -i имя_rpm-архива
Если у Вас была установлена предыдущая версия пакета,
то в простейшем случае надо дать команду следующего
формата:
rpm -U --force имя_rpm-архива
Здесь параметр -U говорит программе, что надо
произвести обновление (upgrade) пакета, а опция --force
требует безусловно (и без лишних вопросов) обновить все
входящие в пакет файлы. Заметьте, что это очень сильное
требование, и в некоторых случаях может быть лучше
сохранить какие-то (например, конфигурационные) файлы от
предыдущей версии. Если установка проходит
нормально, и никаких дополнительных сообщений не
появляется, то после завершения работы программы (после
появления приглашения shell) Вы можете пользоваться
вновь установленным пакетом.
К сожалению, не всегда все так просто. Приведу
конкретный пример. У меня был установлен 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 программа инсталляции
тоже проверяла взаимозависимости пакетов и предлагала
установить недостающие. Однако в случае инсталляции все
необходимые пакеты находятся на том же диске, а здесь
мне пришлось вначале поискать нужные пакеты. Два пакета
(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 -qpl имя_rpm-архива
а для получения информации о пакете - команду
rpm -qpi имя_rpm-архива
Дело в том, что файлы RPM кроме собственно архива
файлов содержат информацию о пакете, включая имя, версию
и краткое описание. Вы можете просмотреть эту
дополнительную информацию с помощью команды:
rpm -qpi glib-1.0.6-3.i386.rpm
Если дать команду rpm -qpl
glib-1.0.6-3.i386.rpm, будет выдан список входящих в
пакет файлов с указанием того, куда они будут
установлены:
/usr/lib/libglib.so.1
/usr/lib/libglib.so.1.0.6
RPM также предоставляет мощную систему запросов по
установленным в системе пакетам. По команде rpm
-qа Вы получите перечень всех установленных в
системе пакетов (перечень будет очень большим, так что
лучше сразу направить вывод в фильтр more). Вы можете
искать информацию об отдельном пакете или об отдельных
файлах. Например, Вы можете легко найти, какому пакету
принадлежит файл и откуда появился:
rpm -qf /etc/bashrc bash-1.14.7-16.
Если Вы беспокоитесь о том, что случайно удалили
важный файл из установленного пакета, просто проверьте
это:
rpm -Va
Вы будете оповещены об любых аномалиях. Потом можно
переустановить пакет, если это необходимо. Любые
конфигурационные файлы будут сохранены.
RPM - это очень полезная утилита, и, как Вы видите,
имеет различные опции. Более подробное описание команды
rpm Вы можете найти в RPM-HOWTO, страницах man и info.
Здесь оно не приводится, потому что существуют и более
удобные и "человечные" программы для управления
установленным в системе ПО и процессами его
обновления.
Автор: В.А.Костромин |