Глава 2. Установка и модификация программ в системах на базе RPM
2.1. Введение
В наши дни установка дистрибутива Linux производится без особых проблем. Вставьте диск CD-ROM в дисковод, задайте несколько конфигурационных параметров и отправляйтесь пить чай, пока идет установка. Современные версии Linux превосходно распознают оборудование, быстро устанавливаются (обычно за 30 минут и менее) и требуют не более одной промежуточной перезагрузки.
Компиляция системы по исходным текстам
(старый подход) Сопровождение системы Linux также прошло большой путь. Благодаря пакетам и интеллектуальным средствам разрешения зависимостей своевременное обновление системы и исправление ошибок упростилось и стало порождать меньше ошибок. В наши дни молодежь получает все готовенькое. В доисторические времена не было дисководов CD-ROM — вместо широкополосного подключения приходилось использовать коробки дискет. Чтобы установить новую программу, нам, ветеранам, приходилось подолгу загружать архивы или копировать их с дискет, а затем компилировать их по исходным текстам. Зависимости? Все проблемы приходилось решать самим, без малейшей помощи со стороны новомодных утилит. Все проходило примерно так:
# tar -xvf someprogram.tar
# ./configure
# make
Вызов make завершался неудачно из-за неразрешенных зависимостей. Тогда приходилось загружать архив программы с необходимыми библиотеками, что на модеме со скоростью на 300 бод (такой, с резиновой присоской, крепится на телефоне) занимало около 6 часов. Я провела это время за работой в саду. Когда пересылка была закончена, я вернулась, распаковала новый архив и повторила попытку:
# ./configure
# make
Снова длинная цепочка сообщений об ошибках, указывающих на новые неразрешенные зависимости. Загружаем новый архив, снова работа в саду. К тому моменту, когда все было установлено и нормально работало, помидоры вырастали до размеров дыни. Хорошо, что в те времена мы были такими умными, что могли бы обойтись и без компьютеров.
Почему возникали эти мучения с зависимостями? Потому что в Linux используются общие библиотеки, которые динамически подключаются на стадии выполнения. Многие программы, совершенно не связанные друг с другом, пользуются одними библиотеками; такая архитектура повышает скорость и эффективность системы. Программы расходуют меньше памяти и места на диске, становятся более компактными, что упрощает их распространение. Но по мере эволюции и усложнения системы Linux становилось все труднее справляться с построением системы по исходным текстам. Так программы стали оформляться в виде пакетов. В пакет входят откомпилированные библиотеки, сценарии, выполняемые до и после установки, файловые индексы, сценарии удаления и т. д. Каждый пакет знает все, что ему необходимо знать для разрешения своих зависимостей. Информация обо всех файлах, установленных из пакетов, хранится в системной базе данных пакетов.
Средства разрешения зависимостей
Впрочем, ситуация не столь безоблачна. Самой популярной системой управления пакетами для Linux является RPM (Red Hat Package Manager). RPM — мощная система; она осуществляет проверку зависимостей и версий, а также отслеживает все установленные пакеты в базах данных RPM. Но RPM не может произвести выборку дополнительных пакетов для разрешения зависимостей или управлять связями между пакетами. Оказавшись в тупике из-за проблем зависимости, RPM лишь сообщает, какие пакеты нужно установить; пользователю приходится самостоятельно искать пакеты и устанавливать их. При этом могут возникнуть новые конфликты зависимостей, и простая установка быстро выходит из-под контроля. Подобные ситуации называются «кошмаром RPM».
Для систем на базе RPM было разработано несколько программ разрешения зависимостей, в том числе apt-rpm, urpmi, Yum и Ximian Red Carpet. В конкретных дистрибутивах имеются превосходные программы установки/разрешения зависимостей — скажем, up2date в Red Hat или YaST в SuSE. В этой главе рассматриваются основы RPM и программа Yum, которая изначально разрабатывалась для систем на базе RPM. Для многих пользователей Yum обеспечивает оптимальное сочетание богатства возможностей и простоты использования.