Открыть сервис

Формат .deb

deb — это формат бинарных пакетов, используемый в операционных системах на основе ядра Linux, в первую очередь в дистрибутивах семейства Debian (Debian, Ubuntu, Linux Mint и их производных). Файл с расширением .deb представляет собой архив, содержащий исполняемые файлы, библиотеки, конфигурационные данные, документацию и метаинформацию, необходимую для установки, обновления и удаления программного обеспечения с помощью системы управления пакетами.

История

Формат deb был разработан в 1993—1994 годах для дистрибутива Debian, который создавался как полностью свободная операционная система. Первоначально для управления пакетами использовалась утилита dpkg, а сам формат представлял собой простой tar-архив с определённой структурой. В 1995 году с выходом Debian 1.1 «Buzz» была введена система управления пакетами APT (Advanced Package Tool), которая автоматизировала разрешение зависимостей и загрузку пакетов из репозиториев. С тех пор формат deb остаётся основным для Debian и его производных, пройдя несколько этапов стандартизации и улучшения, включая поддержку цифровых подписей для верификации подлинности пакетов.

Структура файла .deb

Файл .deb представляет собой архив в формате ar (Unix-архиватор), который содержит три обязательных компонента:

  • debian-binary — текстовый файл с версией формата (обычно содержит строку 2.0).
  • control.tar.gz (или control.tar.xz) — архив с метаданными пакета: файлы control (описание, зависимости, версия), md5sums (контрольные суммы), conffiles (список конфигурационных файлов), preinst, postinst, prerm, postrm (скрипты, выполняемые до и после установки/удаления).
  • data.tar.gz (или data.tar.xz, data.tar.bz2, data.tar.zst) — архив с файлами, которые будут установлены в файловую систему (исполняемые файлы, библиотеки, документация и т.д.).

Сжатие data-архива может различаться: в современных дистрибутивах всё чаще используется zstd (расширение .zst) для более быстрой распаковки, хотя gzip остаётся наиболее распространённым.

Система управления пакетами

dpkg

dpkg (Debian Package) — низкоуровневая утилита для установки, удаления и управления пакетами .deb. Она работает напрямую с файлами пакетов, но не разрешает зависимости автоматически. Основные команды: dpkg -i package.deb (установка), dpkg -r package (удаление), dpkg -l (список установленных пакетов).

APT

APT (Advanced Package Tool) — инструмент более высокого уровня, который автоматически загружает пакеты из репозиториев, разрешает зависимости и управляет обновлениями. APT использует dpkg для фактической установки пакетов, но добавляет функциональность работы с репозиториями (файл /etc/apt/sources.list), кэширование метаданных и интеллектуальное разрешение конфликтов.

Другие инструменты

  • Aptitude — консольный интерфейс для APT с текстовым меню и возможностью поиска.
  • Synaptic — графический менеджер пакетов на основе GTK.
  • GDebi — утилита для установки локальных .deb-файлов с автоматическим разрешением зависимостей через APT.

Метаданные пакета

Файл control содержит обязательные и опциональные поля, описывающие пакет:

ПолеОписаниеПример
PackageИмя пакетаfirefox
VersionВерсия пакета1:115.0.2+build1-0ubuntu0.22.04.1
SectionКатегория (например, net, utils, devel)web
PriorityПриоритет (required, important, standard, optional, extra)optional
ArchitectureАрхитектура (amd64, i386, arm64, all)amd64
DependsСписок зависимостей (другие пакеты, необходимые для работы)libc6 (>= 2.35), libgtk-3-0
RecommendsРекомендуемые пакеты (не обязательны, но желательны)fonts-dejavu-core
SuggestsПредлагаемые пакеты (необязательные)firefox-locale-ru
DescriptionКраткое и полное описаниеMozilla Firefox web browser

Разрешение зависимостей

Одна из ключевых особенностей формата deb — система зависимостей. Пакет может указывать:

  • Depends — пакеты, которые должны быть установлены обязательно.
  • Pre-Depends — пакеты, которые должны быть установлены и настроены до установки данного пакета (используется для критических компонентов, например, dpkg).
  • Recommends — пакеты, которые обычно устанавливаются вместе, но не обязательны.
  • Suggests — пакеты, которые могут быть полезны, но не требуются.
  • Conflicts — пакеты, которые не могут быть установлены одновременно.
  • Replaces — пакеты, которые заменяются данным пакетом.
  • Provides — виртуальные пакеты, которые данный пакет предоставляет (например, mail-transport-agent).

APT автоматически разрешает эти зависимости, загружая и устанавливая все необходимые пакеты из репозиториев.

Процесс установки

Установка пакета .deb с помощью dpkg включает следующие шаги:

  1. Распаковка архива ar и извлечение control.tar.gz и data.tar.gz.
  2. Проверка целостности (контрольные суммы) и соответствия зависимостям.
  3. Выполнение скрипта preinst (если есть).
  4. Распаковка data.tar.gz в корневую файловую систему.
  5. Выполнение скрипта postinst (настройка, запуск служб, обновление базы данных).
  6. Обновление базы данных установленных пакетов в /var/lib/dpkg/.

При удалении выполняются скрипты prerm и postrm, а файлы, отмеченные как конфигурационные, могут оставаться в системе (если не указана опция --purge).

Отличия от других форматов

  • RPM (Red Hat Package Manager) — основной формат в дистрибутивах Red Hat, Fedora, CentOS, openSUSE. RPM использует другой формат архива (cpio) и иную систему метаданных. Инструменты управления — rpm и dnf/yum.
  • Flatpak, Snap, AppImage — современные форматы, ориентированные на изоляцию приложений и контейнеризацию. Они не требуют разрешения зависимостей на уровне системы и могут работать в разных дистрибутивах, но занимают больше места и имеют свои механизмы обновления.

Инструменты для создания .deb-пакетов

Создание пакета .deb требует соблюдения определённой структуры каталогов и правил. Основные инструменты:

  • dpkg-deb — утилита для сборки и распаковки .deb-файлов.
  • debhelper — набор скриптов для автоматизации сборки (наиболее распространён).
  • dh-makeгенератор шаблонов для создания пакета из исходного кода.
  • Checkinstall — утилита, которая отслеживает установку программы из исходников и создаёт .deb-пакет на основе изменений в файловой системе.
  • equivs — инструмент для создания пустых пакетов-заглушек (например, для удовлетворения зависимостей).

Репозитории и распространение

Пакеты .deb распространяются через репозитории — каталоги, содержащие метаданные (файлы Packages.gz или Packages.xz) и сами пакеты. Репозитории могут быть официальными (например, репозитории Debian или Ubuntu) или сторонними (PPA для Ubuntu, репозитории разработчиков). Для обеспечения безопасности пакеты подписываются цифровыми подписями GPG, а APT проверяет подлинность репозитория.

Критика и ограничения

  • Зависимости — сложная система зависимостей может приводить к конфликтам, особенно при установке пакетов из разных репозиториев.
  • Фрагментация — пакеты .deb, созданные для одного дистрибутива (например, Ubuntu), могут не работать в другом (Debian) из-за различий в версиях библиотек.
  • Отсутствие изоляции — в отличие от Flatpak или Snap, пакеты .deb устанавливаются в общую файловую систему и могут конфликтовать с другими пакетами.
  • Сложность создания — для создания корректного пакета требуется знание структуры и правил Debian Policy, что может быть сложно для новичков.

Источники

  • Debian Policy Manual (раздел о структуре пакетов)
  • dpkg man-страницы (dpkg, dpkg-deb)
  • APT HOWTO (документация Debian)
  • Ubuntu Packaging Guide
  • «The Debian System» by Martin F. Krafft

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →