Deb (формат файлов)

deb (сокр. от Debian) — расширение имён файлов «бинарных» пакетов для распространения и установки программного обеспечения в операционной системе проекта Debian и других, использующих систему управления пакетами dpkg.

deb-old 
Изначальный («старый») формат, обозначаемый в документации как deb-old, использовался до версии Debian 0.93. Его устройство следующее: две строки ASCII-текста, за которыми следуют два сцепленных архива формата tar.gz. Первая строка содержит номер версии формата, дополненный до 8 цифр (0,939000 для всех старых форматов). Вторая строка содержит десятичную строку (без начальных нулей), определяющую длину первого архива формата tar.gz. Каждая из этих строк завершается одним символом новой строки.

Современный формат 
Начиная с Debian версии 0.93 deb-файл представляет собой архив формата ar.

Обычно архив содержит 3 файла в нижеприведенной последовательности:
 debian-binary — текстовый файл, содержащий версию формата deb-пакета (современный формат — версия 2.0);
 control.tar — tar-архив, содержащий информацию и скрипты установки пакета, может быть сжат с помощью gzip или xz, тип архива отображается в имени файла (к примеру control.tar.gz).
 data.tar — tar-архив, содержащий дерево устанавливаемых файлов пакета, может быть сжат с помощью gzip, bzip2, lzma или xz, тип архива отображается в имени файла (к примеру data.tar.gz).

Архив control.tar содержит информацию о поставляемом в данном пакете программном обеспечении:
 control — содержит краткую информацию о пакете программного обеспечения: наименование, версия, описание, целевая архитектура, зависимости от других пакетов и так далее;
 md5sums — cодержит MD5-суммы всех устанавливаемых файлов;
 conffiles — список файлов пакета, являющихся конфигурационными, при обновлении файлы из этого списка не перезаписываются новыми, если это не указано отдельно;
 preinst, postinst, prerm, postrm — необязательные сценарии оболочки, выполняемые соответственно до и после установки или удаления пакета;
 config — сценарий для debconf — механизма конфигурации;
 shlibs — список разделяемых библиотек пакета.

Архив data.tar содержит устанавливаемые файлы пакета и при установке разворачивается в систему относительно её корня.

Репозитории 
Основной вид распространения deb-пакетов — репозитории. Для описания репозитория обычно используется строчка:
 deb http://ftp.debian.org/debian squeeze main contrib non-free
 deb — указание типа репозитория
 http://ftp.**** — URI корня репозитория. Может использоваться http:// ftp:// file:// и некоторые другие схемы.
 squeeze — distribution part. Версия операционной системы.
 main contrib *** *** — component — Компоненты операционной системы (в основном различающиеся свободой).
Репозиторий, размещенный в сетевых хранилищах, обычно объединяет несколько distribution part с общим хранением пакетов. структура обычно такова.
 /pool/ — структуированное по имени хранилище скомпилированных пакетов и исходных текстов программ.
 /dists/ — списки пакетов, входящие в определённый distribution part.

Программное обеспечение 
Стандартная программа для управления этими пакетами — dpkg, часто используемая с помощью apt и aptitude.

Deb-пакеты могут быть преобразованы в пакеты других форматов, и наоборот, например, программа alien преобразует RPM-пакеты в формат deb и обратно.

Создание пакетов 
Создают пакеты deb обычно с помощью утилит dpkg — в частности, dpkg-buildpackage. Основы создания пакетов описаны в «Руководстве нового сопровождающего Debian» и «Справочнике разработчика Debian».

Совсем простые, но малопригодные для серьёзного сопровождения пакеты можно создавать с помощью программы CheckInstall.

Debhelper — коллекция небольших программ, которые могут быть использованы в файлах debian/rules (наборах инструкций для сборки deb-пакета). Создана Джо Хессом с целью предоставить создателям пакетов Debian возможность писать структурно более простые debian/rules-файлы и повторно использовать готовые стабильные и удобные решения для многих подзадач сборки пакетов. По состоянию на конец 2010-х годов содержит более 60 небольших программ.

Часто вместе с программами debhelper используют написанную Крейгом Смоллом утилиту dh_make (не являющуюся его частью), которая копирует шаблоны всех файлов, необходимых для постройки deb-пакета из исходного кода программы. Эти шаблоны могут включать информацию, которую предоставил пользователь, и краткую информацию о том, как строится программа из исходного кода. После запуска dh_make, как правило, всё равно необходимо отредактировать большинство файлов шаблонов для того, чтобы построить deb-пакет.

Система CDBS — набор make-правил, использующий debhelper и позволяющий пользователям писать ещё более короткие файлы сборки deb-пакетов.

udeb 
Проект debian-installer ввёл формат udeb («µdeb», «микро-deb»), который идентичен формату deb, но не полностью следует политике Debian, в частности, не содержит документации и должен использоваться только инсталлятором Debian (Debian-Installer), который является новым установщиком Debian, разработанным для Debian Sarge. Программа udpkg, используемая для работы с такими микропакетами, имеет ограниченные возможности по сравнению с dpkg, в частности, по связям пакетов. Причиной возникновения такого формата — недовольство ядра сообщества Debian наличием пакетов, не отвечающим политике дистрибутива, поэтому для них было выбрано другое имя, чтобы подчеркнуть это и не допустить их непреднамеренную установку на рабочую систему.

Именование пакетов 
Структура имени пакетов такова: имя-дополнение-версия_архитектура.deb
 Имя пакета;
 Если данный пакет содержит:
 заголовочные и другие файлы для разработчиков → «-dev»;
 отладочную информацию → «-dbg»;
 файлы документации → «-doc»;
 исполняемые файлы (обычно идущие с библиотеками) → «-bin»;
 «-» и версия пакета
 После основной версии может стоять номер ревизии пакета в виде «-1», «-2»…
 Если изменения касаются только соответствия критериям Debian по определению свободного ПО, то «.dfsg-1», «.dfsg-2»…
 Для обновлений безопасности внутри стабильной ветки Debian добавляется «etch2», «lenny1»…
 Если пакет загружен в репозиторий не одним из основных мейнтейнеров (), то добавляется «+1», «+2»…
 «_» и архитектура: «_i386», «_amd64», «_all»…

Примечания

Ссылки 
 
 
 
 

Форматы файлов
Debian
Форматы архивов