Deb-пакеты: формат и зависимости
Формат пакетов (deb) дистрибутива Debian, как и основанные на нём средства пакетного менеджмента -- в числе выдающихся достижений его разработчиков, унаследованное всеми Debian-клонами и дериватами. Во многом именно они и предопределили успех производных от него дистрибутивов, в том числе и тех, которые, как Ubuntu, популярностью превзошли родителя.
Пакет Debian -- архивный файл (собранный утилитой ar
), содержащий два обычных архива *.tar.gz
, один из которых включает скомпилированные исполняемые бинарники (и необходимые им для работы компоненты -- библиотеки, конфиги, документацию и так далее), второй же -- так называемые управляющие файлы: контрольные суммы, описания зависимостей, пред- и постинсталляционные сценарии.
Средства управления пакетами должны не только обеспечить разворачивание архивов и помещение их в нужные места файловой системы, но и каким-либо образом отреагировать на зависимости -- либо просто сообщить о их нарушении, либо попытаться разрешить их своими силами.
Понятие зависимостей в Debian и его производных отличается от принятого в большинстве других дистрибутивов (и вообще ОС Unix-семейства). Как уже неоднократно отмечалось ранее, обычно различаются только
- обязательные (или “жесткие”) зависимости, без удовлетворения которых установка и работа программы невозможна (например, зависимость от системных библиотек), и
- зависимости необязательные (”мягкие”), без разрешения которых программа сохраняет работоспособность, но удовлетворение их добавляет ей функциональности.
В Debian зависимости имеют несколько градаций: обязательные (depends), настоятельно рекомендуемые (recommends), рекомендуемые умеренно настойчиво (suggests), конфликтующие (conflicts). Первая градация -- это обычные “жесткие” зависимости. С последними тоже понятно -- это, так сказать, анти-зависимости. Ну а настоятельно рекомендуемые и рекомендуемые просто -- это две разновидности “мягких” зависимостей. То есть первая категория как бы более нужная, нежели вторая. Впрочем, таково субъективное мнение майнтайнера данного пакета -- вполне возможно, что у пользователя будут иные потребности. И это мы учтем при выборе средства управления пакетами.
Кроме того, спецификой Debian является еще и существование так называех пред-зависимостей (pre-depends) -- при их нарушении установка пакета даже не может начаться. Впрочем, с точки зрения пользователя они немногим отличаются от обычных зависимостей типа depends.
Кроме зависимостей, в системах пакетного менеджмента Debian важно также понятие приоритета пакета. отражающее степень необходимости его для функционирования системы, например: обязательный (required), без которого функционирование системы невозможно, основной (base) и важный (important), также оказывающиеся практически необходимыми, стандартный ( -- то есть имеющийся практически в любой полнофункциональной Linux-системе, дополнительный (optional) -- тут уж степень важности каждый должен решать для себя.
Как это принято в мире Open Source, все бинарные пакеты Debian (а также, конечно, Ubuntu и других клонов) сопровождаются исходными текстами, доступными из репозиториев дистрибутива. И здесь Debian проявляет свою специфику: каждый пакет в исходниках обычно включает три файла -- packagename.orig.tar.gz
, packagename.dsc
и packagename.diff.gz
.
Первый -- самый обычный тарбалл исходных текстов авторского пакета, что подчеркивается словом orig в его имени: имя и система нумерации версий также совпадают с таковыми авторского пакета. Файл packagename.dsc
содержит в себе всю метаинформацию, необходимую для правильного построения из него бинарного deb-пакета (как -- будет рассказано в следующих разделах). А packagename.diff.gz
-- это те изменения исходного кода, которые вносятся для адаптации пакета непосредственно к данному дистрибутиву. Если таких изменений не потребовалось (или если пакет писался именно для Debian), он может и отсутствовать.
- Debian и Ubuntu: пакеты и репозитории
- Deb-пакеты: формат и зависимости
- Устройство репозитория Ubuntu
- Debian и Ubuntu: настройка доступа к репозиториям пакетов
Теги: deb, debian, ubuntu