Система RPM пакетов в Linux очень сильно облегчает жизнь ленивым админам и начинающим пользователям CentOS (ну и множества других дистрибутивов).
Просто о сложном
Если в двух словах, rpm позволяет устанавливать, удалять и обновлять программное обеспечение чаще всего в неинтерактивном (тихом режиме), что позволяет начинающим пользователям, слабо разбирающихся в особенностях работы *nix быстро установить/удалить/обновить практически любой компонент.
Хорошим подспорьем также служат RPM менеджеры - это программы, позволяющие автоматически скачивать пакеты и отслеживать зависимости при их установке и обновлении Все необходимые данные RPM менеджеры берут из репозиториев, неких хранилищ пакетов, специально подготовленных для вашей архитектуры и ОС.
Однако и тут есть ложка дёгтя, при выходе очередной версии какой-то программы, проходит давольно большой срок, пока для неё создадут rpm пакет, особенно это касается устаревших веток (в нашем случае CentOS 4). Также, есть ещё один недостаток, в различных репозиториях, пакеты даже в рамках одной версии программы, могут (но не обязательно) несколько различаться между собой.
Каждый пакет имеет название, в котором закодировано:
<название-программы>-<версия>-<релиз>.<архитектура>.rpm
Ну с названием и версией всё понятно, номер релиза это количество раз пересборки программы в рамках одной и той же версии для данного репозитария. Чаще всего, релиз используется для обозначения дистрибутива, под который собран данный пакет, например fc4 для Fedora Core 4.
Ну и архитектура, под которую собран пакет i386 например.
Подключение дополнительных репозиториев CentOS 4 и CentOS 5
CentOS основана на Fedora Core, поэтому здесь мы можем воспользоваться прекрастным консольным менеджером yum. Как установить yum на CentOS, если он не был предустановлен, можете почитать здесь. Заодно потренируетесь скачивать, устанавливать и отслеживать зависимости пакетов :)
yum пользоваться очень просто!
yum -h если что выдаст краткий мануал по командам. Установка пакета делается простой командой:
yum install ИМЯ_ПАКЕТА
В результате её выполнения будет запрос с разрешением скачать все нужные пакеты и библиотеки для установки выбранного вами пакета, ну либо оповещение о неудаче поиска..
С CentOS (особенно это касается 4й ветки), чаще всего в наборе стандартных репозиториев вы не найдёте нужную версию, да и вообще нужный вам пакет. НО, не стоит отчаиваться, решение есть!
Заключается оно в подключении ряда дополнительных репозиториев.
Для подключения репозитория, вам необходимо найти на его оффициальном сайте репозитория адрес специального установочного rpm-пакета. Да-да! Установка репозитория также возможна через RPM пакеты, воистину удобнейшее средство! Выбирая пакет, будьте бдительны, и подключайте только репозитории вашей архитектуры и версии операционной системы.
Версию релиза вашей CentOS можете узнать выполнив в шеле:
cat /etc/redhat-release
Репозиториев на самом деле великое множество, рекомендую использовать самые популярные. В них чаще всего не возникает проблем с зависимостями.
1. EPEL для RHEL/Centos 4 и 5. Этот репозиторий очень тчательно тестируется, SPEC файлы для сборки должны удовлетворять правилам сборки пакетов принятых в Fedora. Не конфликтует с пакетами из базового дистрибутива.
2. DAG + Dries давольно давно, был лучшим из всех репозиториев, популярные пакеты очень часто обновлялись. Сейчас ситуация обстоит несколько хуже, в разрезе CentOS - многие пакеты в нем конфликтуют с пакетами из вышеуказанного EPEL :(
3.ATRPMS небольшой но иногда полезный репозиторий, по заверению общественности, некоторые пакеты конфликтуют с EPEL.
4.redhat-club.org небольшой, однако ёмкий в плане нужных программ репозиторий в котором содержатся пакеты из Livna + внушительное количество нужного, и не очень софта для серверов, отсутствующие в других репозиториях. Несомненный плюс данного репозитария, что он не конфликтует с базовым дистрибутивом и EPEL.
Ещё не плохой CentOSPlus, однако он частенько конфликтует с пакетами из базового дистрибутива.
Конфликты, о которых я упомянул, чаще всего можно решить путём выставления приоритетов для репозиториев. В yum есть куча полезных плагинов для выполнения разных полезных функций, для решения данной проблемки существует плагин yum-priorities ( в CentOS 4 yum-plugin-priorities).
Установка как и всегда простая: yum install yum-priorities (в CentOS 4 yum install yum-plugin-priorities).
После установки, отредактируйте ваш
vi /etc/yum.conf
plugins=1
После установки, для активации данного плагина, проверяем файл
vi /etc/yum/pluginconf.d/priorities.conf
на предмет наличия в нём:
[main]
enabled=1
Итак плагин установлен и активирован. Суть данного плагина, как наверное вы уже догадались, это установка приоритетов для репозиториев при поиске пакетов и их зависимостей.
Устанавливается он
priority=1
Вместо 1 может быть любое число от 1 до 99.
Например мы хотим чтобы yum искать обновления только на основном репозитарий, и ни в каком случае не искал пакеты на centosplus.
Для этого, ставим priority для centosplus ниже, чем у base. И наоборот, если допустим в результате установки какого то пакета с репозитория centosplus, возникают проблемы так как нет нужной версии на base репозитории. Для решения данной проблемы, просто повышаем приоритет репозитория centosplus, и нужные версии пакетов, необходимых для установки, ну или обновления какого-то пакета, будут искаться только на репозиториях, с уровнем priority не ниже, чем priority для centosplus. Как видите всё давольно просто.
Для вышеуказанного примера, приоритеты выставляются в файле CentOS-Base.repo
Не рекомендую сильно увлекаться такими дейстиями, так как вы можете загнать себя в патовую ситуацию, когда из-за какой-нибудь неугодной библиотеки для одного пакета, вам придётся вручную переустанавливать кучу других пакетов. Чаще всего подобные проблемы возникают при обновлении редкоюзаемой сообществом программы, на старой системе, где большиство программ, и соответственно библиотек, не обновлялось эдак порядка полугода.