Чтение онлайн

ЖАНРЫ

Стахнов Алексей Александрович

Шрифт:

Остаются, конечно, некоторые вопросы: "Почему я не могу убрать лишнюю функциональность, зачем эта игра перезаписала мой DirectX 8 своим DirectX 5, для чего в системе столько DLL для разных версий Visual Basic." Но, в общем, это намного проще, чем вручную копировать какие-то архивы, распаковывать их, править конфигурационные файлы, искать конфликты библиотек и версий, а в самом неприятном случае – получать ошибки компиляции или линковки и просматривать исходные тексты программ. Это еще один упрек Linux со стороны пользователей Windows. И как часто бывает, они не совсем правы. Да, в большинстве своем программы Linux поставляются в виде исходных кодов, упакованных в архив. Но так наиболее просто удовлетворить требование лицензии GNU, которая обязывает дистрибьютора программы в обязательном порядке предоставить потребителю

ее исходный код.

Не следует также забывать, что программы разрабатываются не только для Linux, обычно их можно откомпилировать на многих UNIX-платформах, а в UNIX-мире стандартом de-facto для пакетов является так называемый «tarballs». Tarballs – это архивы, которые распаковываются утилитой tar (файлы с расширением tar) или gzip (файлы с расширением tar.gz). Поскольку Linux-программы по большей части распространяются через Интернет, проще выложить на FTP-сервер и скачать оттуда архив только с исходным кодом программы, чем выкачивать архив и с исходными кодами, и с откомпилированной программой. Кроме того, энтузиасты Linux, как правило, имеют привычку смотреть исходные коды программ, изменять их и компилировать так, как им нравится (включать поддержку команд определенного процессора, добиваться максимального уровня оптимизации, различной степени выдачи отладочной информации и т. д.).

Однако с приходом в мир Linux пользователей, которые не желают учить опции компилятора, помнить, какие библиотеки установлены в системе, ждать по полчаса, пока откомпилируется программа и т. п., остро возник вопрос о стандартизации процесса установки программ в Linux. На сегодняшний день есть, по меньшей мере, три, или, если быть совсем точным, три с половиной способа установки программ. Способ первый, «старейшина» – программы распространяются в виде архивов исходных кодов *.tar.gz, которые необходимо распаковать и, в простейшем случае, откомпилировать командами make, make install. Способ второй — воспользоваться программой RPM (Red Hat Linux package management, Red Hat Linux менеджер пакетов) и, соответственно, пакетами RPM, содержащими уже откомпилированный код программ. Способ «два с половиной» – воспользоваться программой RPM и пакетами RPM с исходным кодом. Здесь два варианта: или получать исходный код пакетов, или делать из пакета с исходным кодом пакет с исполняемым кодом и устанавливать. Способ третий — разновидность второго – менеджер пакетов, входящий в дистрибутив Linux Debian. Возможно, в этой главе не будет упомянут какой-то другой способ инсталляции или менеджер пакетов. Мир Linux и Интернет настолько велики, что узнать или охватить все невозможно. Как уже упоминалось, значительная часть современных дистрибутивов тем или иным образом основаны на дистрибутиве Red Hat Linux, или, по крайней мере, имеют утилиты, способные работать с пакетами формата RPM. Поэтому эта глава полностью посвящена RPM-пакетам и RPM-менеджерам.

Система поддержки пакетов RPM

Во многом благодаря RPM, а так же удобной программе инсталляции Linux, дистрибутив Red Hat Linux завоевал огромнейшую популярность. Рассмотрим вкратце основные особенности RPM.

Для системного администратора RPM предоставляет следующие возможности:

• модернизировать отдельные компоненты системы или набора пакетов, сохраняя их конфигурацию;

• получать информацию об используемых пакетом файлах;

• получать информацию о зависимостях пакетов (необходимых библиотеках и т. д.);

• производить проверку пакетов;

• выдавать раздельно пакеты в авторском виде и сделанные к ним добавки;

• производить автоматизированное обновление пакетов (например, получение обновлений с FTP-сервера).

Благодаря этому с помощью RPM можно устанавливать, обновлять, удалять пакеты единственной командой в текстовом режиме или несколькими щелчками мышью в графическом менеджере пакетов. Пакет RPM содержит информацию о себе в заголовке пакета. Эта информация при установке пакета добавляется в базу данных установленных пакетов, где содержится информация о том, где находится пакет, какие дополнительные (supporting) пакеты ему необходимы и установлены ли они. Знатоки Windows могут заметить, что централизованная база данных установленных пакетов

очень сильно напоминает часто критикуемый реестр Windows. Сравнение, однако, поверхностно. На самом деле, реестр Windows помимо списка установленных программ содержит в себе многочисленные системные настройки, без которых (повреждение или отсутствие реестра) не будет функционировать система в целом. Для Linux отсутствие или повреждение базы данных установленных пакетов вовсе не фатально. Как будет показано далее, базу данных всегда можно попытаться создать заново. Но не это главное. Отсутствие или повреждение базы данных никоим образом не сказывается на работоспособности системы – она полноценно функционирует. Могут возникнуть проблемы с обновлением или установкой пакетов, но их можно обойти с помощью специальных ключей программы RPM (принудительная инсталляция, отказ проверять зависимости и т. п.).

Принципы наименования пакетов

Имя пакета характеризует сам пакет, его версию, версию сборки исполняемых файлов (релиз) и архитектуру и задается в виде «имя_программы-версия-релиз.платформа» или «src.rpm».

Рассмотрим для примера пакет telnet-server-0.17–18.i386.rpm. По названию файла можно определить, что пакет содержит tclnct-ссрвср версии 0.17, версия сборки файлов (релиз) 18 для данной версии пакета Red Hat Linux, собрана для процессора Intel 80386 и выше, формат файла – RPM. Файл пакета, у которого вместо архитектуры (например, i586) стоит src, содержит в себе исходные тексты программы. Иногда встречается немного другая структура именования пакета, например, apache-1.3.3–1.src.rpm. Здесь версия пакета – 1.3.3 – состоит из трех цифр. На инсталляционных дисках Red Hat и на FTP скомпилированные пакеты хранятся в каталоге RPMS, а пакеты, содержащие исходный код, – в каталоге SRPMS.

Структура пакета RPM в данной главе описана не полностью. Вкратце можно сказать, что в пакете содержатся исполняемые файлы, конфигурационные файлы, документация, все дополнительные файлы, напрямую связанные с пакетом, а также информация о том, куда должны устанавливаться файлы пакета и какие другие пакеты необходимы для его функционирования. После успешной установки пакета информация о нем заносится в базу данных системы RPM.

Достоинства RPM

К основным достоинствам RPM относятся:

• удобная установка программ;

• возможность инсталляции по FTP;

• проверка системы на наличие компонентов, необходимых устанавливаемому пакету;

• простое удаление пакетов из системы. При этом осуществляется проверка зависимостей пакетов системы от удаляемого пакета;

• обновление (Upgrade) пакетов с контролем версии, запрет установки пакета с более ранней версией, чем установленный в системе (Degrade);

• просмотр информации о пакете: что делает, кто сделал, где взять, файлы, содержащиеся в пакете, и т. д.;

• наличие общей иерархии пакетов, с помощью которой просто определить, к какой категории программ относится пакет;

• обеспечение возможности определения принадлежности файла или каталога к пакету;

• комплексная проверка состояния пакетов в системе: что изменялось, что испортилось, что случайно удалили и т. д.;

• отсутствие необходимости производить перезагрузку системы после инсталляции нового пакета. Пакет готов к эксплуатации сразу после установки.

Недостатки RPM

Пакет RPM имеет и недостатки:

• многие программы пакета обновляются позже, чем официально выходят версии программного обеспечения;

• отсутствие RPM для некоторых программ;

• централизованная база установленных пакетов.

Информация, содержащаяся в пакете

Каждый пакет RPM содержит в себе стандартный набор полей, которые характеризуют содержание пакета. Наиболее интересные для пользователя поля приведены ниже.

• Build Host – имя хоста, на котором производилась сборка пакета;

• Build Date – время сборки пакета;

• Change Log – краткий список изменений в программе, по сравнению с предыдущими версиями;

• Copyright – копирайт владельца;

• Description – описание пакета, обычно 1–2 Кбайт текста;

• Group – группа/подгруппа программного обеспечения, к которому относится пакет. К примеру – Development/Languages;

• License – лицензия, по которой распространяется пакет. Для большинства программ, поставляемых в дистрибутиве, лицензия – GPL. Для большинства библиотек – LGPL;

Поделиться с друзьями: