www.Litecode.ru – Сборник рецептов для создания сайтов

Инструкция по сборке deb-пакета

ГлавнаяUnix → Инструкция по сборке deb-пакета

В сети существует не мало статей о том как собрать deb-пакет, но к сожалению не все из них будут понятны для разработчика, который решил сделать сборку впервые. Итак, у вас есть код. Он полезен, хорош, но требует некоторых навыков и усилий при установке на сервер или десктоп. Чтобы избежать ручной работы связанной с копированием файлов, манипуляций с базой данных, настройкой скриптов start-stop (для демонов) и настройкой конфигов, вы решили собрать все в deb-пакет.

В идеале, правильный deb-пакет должен быть подписан gpg-ключом. Иначе apt будет считать пакет ненадежным и будет выдавать соответствующее предупреждение. Но эту часть мы пока пропустим. Мануал о том как создать gpg-ключ и как подписать deb-пакет gpg-ключом рассмотрим позднее.

 

Шаг 1. Устанавливаем утилиты, которые потребуются для сборки вашего пакета:

sudo apt-get install autoconf automake libtool autotools-dev dpkg-dev fakeroot

 

Шаг 2. Создаем корневой каталог для будущего пакета и копируем все файлы вашей утилиты в этот каталог, которые потребуются для работы и установки. Например:

mkdir -p /home/username/deb/my_package
cp /some_source_files /home/username/deb/my_package

Если ваша утилита будет находиться в папке:

/usr/local/share/my_project

Необходимо сохранить всю структуру каталогов и вложенность в корневом файле собираемого пакета:

/home/username/deb/my_package/usr/local/share/my_project

 

Шаг 3. Создаем в корне пакета каталог DEBIAN.

Имя каталога обязательно должно состоять из заглавных букв. В данном каталоге содержится мета-информация которая используется при установке.

cd /home/username/deb/my_package
mkdir DEBIAN

Далее, в каталоге DEBIAN создаем обязательный текстовый файл - control. В данном файле содержится основная информация о пакете. В файле, на каждой строке содержатся пары ключ-значение, разделенные двоеточием.

cd ./DEBIAN
touch control

Пример файла:

Package: my-package
Version: 1.0.0
Provides: my-package
Maintainer: Vasiliy Batareikin <vasiliy@batareikin.ru>
Architecture: all
Section: web
Priority: optional
Pre-Depends: gcc, make, perl (>= 5.10), mysql-server
Depends: gcc, make, perl (>= 5.10), perlmagick, mysql-server, unzip, rar
Description: My first debian package

Package – Имя пакета. Допустимые символы [a-zA-Z0-9-]. Обязательный параметр.

Version – Версия пакета. Обязательный параметр.

Provides – Имя приложения регистрируемое в системе.

Maintainer – Имя и почта мэйнтейнера пакета. Обязательный параметр.

Architecture – Архитектура процессора, для которой предназначен пакет. Обязательный параметр.

Section – Определяет группу приложений. Обязательный параметр.

Priority – Приоритет пакета. Параметр определяет насколько важен ваш пакет в системе.

Pre-Depends – Список пакетов через запятую, которые необходимы в процессе установки вашего пакета. Менеджер пакетов автоматически усатновит указанные пакеты.

Depends – Список пакетов через запятую, которые требуются для работы этого пакета. Менеджер пакетов автоматически усатновит указанные пакеты.

Description – Описание пакета. Обязательный параметр.

Если при установке или удалении пакета необходимо выполнить определенные действия, можно использовать специальные скрипты. Создаем их и ставим права на исполнение:

cd ./DEBIAN
touch preinst postinst prerm postrm
chmod 775 preinst postinst prerm postrm

preinst – Выполняется перед установкой пакета.

postinst – Выполняется сразу после установки пакета.

prerm – Выполняется непосредственно перед удалением пакета.

postrm – Выполняется сразу после удаления пакета.


Шаг 4. Сборка пакета.

Поднимаемся на один уровень с корневой папкой пакета и выполняем сборку:

cd /home/username/deb
fakeroot dpkg-deb --build my_package my-package_1.0.0_all.deb

Если пакет собрался без ошибок, он готов к использованию.