Глава 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 обеспечивает оптимальное сочетание богатства возможностей и простоты использования.