Русская Википедия:Deb (формат файлов)
Шаблон:Значения Шаблон:Файловый формат
Шаблон:Заголовок со строчной буквы deb (сокр. от Debian) — расширение имён файлов «бинарных» пакетов для распространения и установки программного обеспечения в операционной системе проекта Debian[1] и других, использующих систему управления пакетами dpkg.
deb-old
Изначальный («старый») формат, обозначаемый в документации как deb-old, использовался до версии Debian 0.93. Его устройство следующее: две строки ASCII-текста, за которыми следуют два сцепленных архива формата tar.gz. Первая строка содержит номер версии формата, дополненный до 8 цифр (0,939000 для всех старых форматов). Вторая строка содержит десятичную строку (без начальных нулей), определяющую длину первого архива формата tar.gz. Каждая из этих строк завершается одним символом новой строки[2].
Современный формат
Начиная с 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»[3] и «Справочнике разработчика Debian»[4][5].
Совсем простые, но малопригодные для серьёзного сопровождения пакеты можно создавать с помощью программы 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»…
- Если пакет загружен в репозиторий не одним из основных мейнтейнеров (Шаблон:Lang-en), то добавляется «+1», «+2»…
- «_» и архитектура: «_i386», «_amd64», «_all»…
Примечания
Ссылки
Шаблон:Debian Шаблон:Форматы архивов Шаблон:Система управления пакетами