TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #65 6.55K
Cборка бинарного (.deb) пакета:

Ранее мы уже говорили о том, что такое бинарный пакет. Сегодня разберемся с тем, как его создать, рассмотрим архитектурные правила сборки и узнаем про практическую ценность некоторых файлов, которые используются при дебианизации.

Сразу хочу указать на то, что данный пост не является абсолютным HOWTO по созданию пакетов. Тут мы разберем основы и потом, в следующий публикациях будем уходить вглубь по отдельным аспектам, тем самым, шаг за шагом, формируя целостную картину.

Что такое дебианизация?

Дебианизация - это процесс упаковки ПО в .deb бинарный пакет для распространения внутри "Debian based" операционных системах, таких как Ubuntu, Mint, сам Debian и т.д. Хорошо проработанный пакет позволит без особых проблем развернуть необходимое ПО на целевой системе, без необходимости в ручной компиляции и сборке.

Что нужно для создания .deb пакета?

На примере моего любимого композитора picom разберем основные правила дебианизации, посмотрим на уже рабочую структуру и поймем, что к чему.

Сборка любого .deb пакета начинается с создания debian директории в корне проекта. Данный каталог будет содержать в себе все необходимые для дебианизации файлы, в которых будет прописан ряд правил по упаковке софта:


$ cd picom-10.2/debian
$ ls -l
-rw-rw-r-- changelog
-rw-rw-r-- control
drwxrwxr-x patches
-rwxrwxr-x rules
...


Для конфигурации пакета может использоваться множество различных файлов, основными необходимыми являются control, rules и changelog:

1. control - содержит различного рода информацию, необходимую инструментам пакетирования: dpkg, apt-get, apt-cache и т.д. В данный файл принято прописывать список зависимостей, которые пакетный менеджер будет проверять и, по возможности, подтягивать из репозиториев.

Control может включать в себя уйму полей. Как пример, Package: <name>, необходим для определения имени пакета и создания, на этапе сборки, каталога установки:


$ pwd
picom-10.2/debian/picom/
$ ls
etc usr
$ cd usr/bin && ls
compton picom


При инсталляции, файлы, которые лежать внутри picom, по идентичной иерархии перенесутся в системные директории.

2. rules - исполняемый Makefile, который в полной мере управляет процессом сборки и отрабатывает через утилиту make. Тут можно указать набор правил и инструкций, которые будут выполняться на разных этапах:

1) на этапе конфигурации создаем директорию build, в которю помещяем результат работы команды meson:


override_dh_auto_configure:
mkdir -p debian/build
cd debian/build
meson --prefix=/usr ../..


2) на этапе сборки вызываем, сгенерированные утилитой meson, ninja файлы и выполняем компиляцию проекта. Результат компиляции будет лежать в рамках каталога build:


override_dh_auto_build:
cd debian/build && ninja -v


3) на этапе установки заходим в директорию build, записываем в переменную DESTDIR путь, по которому ninja install выполнит перенос готовых бинарников и конфигов:


override_dh_auto_install:
cd debian/build
DESTDIR=${CURDIR}/debian/picom ninja install


3. changelog - файл версионирования, который содержит историю изменений, внесенных в ПО. Его роль не ограничивается только отслеживанием правок. По указанной в нем информации, которая находится после названия приложения (<версия>-<ревизия>), формируется итоговое имя пакета:


picom (9.1-1) unstable; urgency=medium

* New upstream version 9.1

-- Nikos Tsipinakis <nikos@tsipinakis.com>


В результате сборки мы получим пакет с именем picom_9.1-1_amd64.deb, где picom сформировался по значению поля Package из файла control, версия 9.1-1 подставилась из changelog и архитектура amd64 определилась автоматически.

И вот уже с этим минимальным набором файлов можно создать бинарный пакет. После того, как конфигурация готова, выходим из директории debian на уровень выше и запускаем сборочный процесс:


$ cd ..
$ sudo dpkg-buildpackage -b -us -uc
  • ❤‍🔥 10
  • ❤ 6
  • 🔥 6
  • 👍 3
  • 👾 1
More from @linuxcamp_tg
  1. Oct 9, 2026🤖Обходим «белый список» вместе с STRELKA Думали, что белые списки не обходятся когда глуш…
  2. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  3. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  4. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  5. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  6. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →