главная пошаговое создание livecd что такое linux ISO образы
Операционная система с графическим интерфейсом
На главнуюКонтактыКарта сайта
Полезное


 

ДОБРО ПОЖАЛОВАТЬ


О пакетах и пакетных дистрибутивах

Возможна ли более дробная классификация дистрибутивов каждого класса? Возможна, причем по независимым критериям. Так, для пакетных дистрибутивов напрашивается разделение по формату пакетов. Которые можно разделить на две группы - те, что содержат внутри себя мета-информацию (в частности, информацию о зависимостях пакетов), и пакеты, таковой лишенные.

Начнем со второй группы, как более простой. Это самые обычные тарбаллы, то есть компрессированные tar-архивы типа *tar.gz/*tar.bz2 (часто фигурирующие в форме tgz и tbz). Важно, что сами по себе tgz и tbz - это форматы вовсе не пакета, а именно архива (то есть определяются используемой утилитой компрессии - gzip или bzip2, соответственно).

А важно это потому, что те же самые tgz/tbz архивы могут прекрасно содержать в себе и мета-информацию, автоматически попадая тем самым в первую группу. Примеры из Linux-мира мне на ум не приходят, однако packages FreeBSD, в которых, при формальной принадлежности к обычным тарбаллам, содержится исчерпывающая информация о зависимостях, показывают, что ничего невероятного в этом нет.

Однако типичными представителями первой группы являются широко распространенные форматы пакетов rpm (Rpm Packages Manager, характерный для одноименного дистрибутива и его многочисленных потомков) и deb (свойственный дистрибутиву Debian и его клонам). И тот, и другой также представляют собой компрессированные архивы, которые, помимо набора собственно бинарных файлов с указанием путей их размещения в целевой файловой системе, содержат данные о зависимостях, хотя и представленные в разной форме. Впрочем, детали описания мета-информации в аспекте классификации дистрибутивов не важны, а непосредственно к deb-пакетам мы еще вернемся в главе 9.

Отсутствие в составе пакета информации о его зависимостях отнюдь не препятствует контролю над ними: он может осуществляться за счет внешних баз данных репозиториев пакетов и локальных баз данных пакетов установленных. А функции удовлетворения зависимостей в этом случае целиком ложатся на программы, осуществляющие пакетный менеджмент. И надо отметить, что управление "чистыми" тарбаллами подчас оказывается более гибким, чем пакетами с информацией об их зависимостях.

Программы пакетного менеджмента - еще один из критериев классификации. Правда, собственно средства установки пакетов жестко привязаны к их формату - для установки rpm-пакетов служит одноименная утилита (rpm), пакеты deb устанавливаются посредством утилиты dpkg, для пакетных тарбаллов предусмотрены собственные средства, в зависимости от их формата (и обычно - дистрибутив-специфичные, не смотря на похожие, и даже подчас одинаковые, имена, типа pkg_add). Конечно, существуют средства взаимной трансформации пакетов разных форматов (типа rpm2cpio, rpm2tgz или почти универсальной утилиты alien), однако возможности их применения ограничены - очевидно, что из rpm-пакета (и тем более "чистого" тарбалла) получить полноценный deb-пакет невозможно.

Однако существуют еще и средства пакетного мета-менеджмента, если так можно выразиться (собственно, только они-то и заслуживают названия систем управления пакетами). Наиболее известное и распространенное из них - apt (Advanced Packaging Tools). Появившийся сначала в Debian'е и рассчитанный, соответственно, на deb-пакеты, он очень быстро стал универсальным кросс-пакетным механизмом установки, удаления и обновления программ, успешно работая с пакетами rpm (дистрибутивы Connectiva, Altlinux), тарбаллами Slackaware (механизм slapt-get). И в принципе не видно препятствий к прикручиванию его к тарбаллам любого формата - от "чистых" до сколь угодно насыщенных метаинформацией.

Под явным влиянием apt возникли и иные системы пакетного менеджмента - yum, urpmi и так далее. Однако они ориентированы только на rpm-пакеты (вероятно, их можно использовать и для иных форматов, но кому это нужно при наличии apt?) и потому не получили столь широкого распространения, оставаясь принадлежностью "родительских" дистрибутивов и более-менее точных их клонов. Так, yum, насколько мне известно, используется только в Red Hat/Fedora и ASPlinux, urpmi - достояние Mandrake, и судьба его после образования Mandriva (потомка кросс-кузенного брака с Connectiva, впервые прикрутившей apt к rpm-пакетам) не ясна.

Так что если классификация пакетных дистрибутивов по формату пакетов - условно говоря, на rpm-based, deb-based и tarball-based, - имеет некоторый резон, то разделение их по средствам управления оными все больше утрачивает смысл.