Важно! Перед началом убедитесь, что в вашей системе установлена
программа dpkg-deb: она будет использоваться позже для создания окончательного архива.
Создайте рабочий каталог
Создайте временный рабочий каталог, чтобы поместить в него свой пакет. Пример:
mkdir hello_1.0-1_arm64
Создайте внутреннюю структуру
a) Поместите программные файлы туда, где они должны быть установлены в целевой системе с помощью команды mkdir. Например, предположим, что программа должна быть установлена
в «/usr/local/bin», тогда команда будет иметь вид:
mkdir -p hello_1.0-1_arm64/usr/local/bin
Флаг -p команды mkdir создаст вложенные каталоги.
b) Скопируйте туда исполняемый файл:
cp ~/YourProjects/Hello/hello hello_1.0-1_arm64/usr/local/bin
Создайте конфигурационный файл пакета control
Конфигурационный файл control — центральный файл пакета, описывающего все основные свойства. Он находится внутри каталога DEBIAN (DEBIAN/control).
Важно! Обратите внимание на верхний регистр: аналогичный каталог с именем debian (нижний регистр) используется для хранения исходного кода так называемых исходных пакетов. В этой инструкции мы используем бинарные пакеты, поэтому оно нам не нужно.
a) Для начала создадим папку DEBIAN:
mkdir helloworld_1.0-1_arm64/DEBIAN
b) Затем пустой файл control:
touch helloworld_1.0-1_arm64/DEBIAN/control
Заполните файл control
Откройте ранее созданный файл в любом удобном текстовом редакторе. Конфигурационный файл с описанием пакета control — это просто список полей данных. Для бинарных пакетов в минимальный набор обязательных к заполнению полей входят следующие:
- Package – название программы;
- Version – версия программы/пакета;
- Architecture –
целевая архитектура процессора для которой предназначен пакет; - Maintainer — имя и адрес электронной почты лица, отвечающего за обслуживание пакета;
- Description – краткое описание программы.
Пример заполненного файла:
Package: hello
Version: 1.0
Architecture: arm64
Maintainer: Eternalhost <info@eternalhost.net>
Description: A program that greets you.
Файл control может содержать дополнительные полезные поля, такие как раздел, к которому он принадлежит, или список зависимостей. Последнее крайне важно, если ваша программа использует внешние библиотеки для корректной работы.
Соберите deb-пакет
Вызовите dpkg-deb через команду вида:
dpkg-deb --build --root-owner-group <каталог-пакета>
В рассматриваемом примере она приобретет вид:
dpkg-deb --build --root-owner-group <helloworld_1.0-1_arm64>
Флаг --root-owner-group соотносит все содержимое deb пакета с пользователем root, что является стандартным способом. Без такого флага все файлы и папки будут принадлежать пользователю, которого может не быть в системе, где установлен пакет deb.
Приведенная выше команда создаст красивый файл .deb вместе с рабочим каталогом или напечатает сообщение об ошибке, если что-то пошло не так.