Формат пакетов (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