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

Пакет Debian (dpkg)
Изображение логотипа
Иконка deb-файлов в среде GNOME
Иконка deb-файлов в среде GNOME
Расширение .deb[1], .udeb[1] или .ipk[1]
MIME-тип application/vnd.debian.binary-package[1][2]
Разработчик Debian
Тип формата Система управления пакетами
Содержит Программное обеспечение и метаданные в архивах .tar.bz2 или .tar.gz
Расширен из ar[вд] и tar
Установка deb-пакета в Gdebi

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

deb-old

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

Современный формат

Начиная с 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»[5] и «Справочнике разработчика Debian»[6][7].

Совсем простые, но малопригодные для серьёзного сопровождения пакеты можно создавать с помощью программы 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

  • Имя пакета;
  • Если данный пакет содержит:
  • «-» и версия пакета
    • После основной версии может стоять номер ревизии пакета в виде «-1», «-2»…
    • Если изменения касаются только соответствия критериям Debian по определению свободного ПО, то «.dfsg-1», «.dfsg-2»…
    • Для обновлений безопасности внутри стабильной ветки Debian добавляется «etch2», «lenny1»…
    • Если пакет загружен в репозиторий не одним из основных мейнтейнеров (англ. NMU-upload), то добавляется «+1», «+2»…
  • «_» и архитектура: «_i386», «_amd64», «_all»…

Примечания

  1. 1 2 3 4 TrID — 2003.
  2. Current // https://manpages.debian.org/unstable/dpkg-dev/deb.5.en.html#Current
  3. Архивированная копия. Дата обращения: 11 июня 2019. Архивировано 15 марта 2016 года.
  4. Страница руководства deb-old. Дата обращения: 22 июня 2011. Архивировано 1 ноября 2011 года.
  5. Руководство начинающего разработчика Debian. Дата обращения: 11 июня 2019. Архивировано 22 декабря 2018 года.
  6. Debian Developer's Reference — документация developers-reference. Дата обращения: 11 июня 2019. Архивировано 22 декабря 2018 года.
  7. Руководства для разработчиков Debian. Дата обращения: 11 июня 2019. Архивировано 22 декабря 2018 года.

Ссылки