Сборка пакетов для Debian и Ubuntu из исходных кодов: от скелета до репозиториев §

Содержание §

Определитесь, нужна ли вам сборка пакета из исходников §

Я не буду здесь рассказывать для чего нужны пакеты - если вы заинтересовались их сборкой, то примерно представляете, что они такое и с чем их едят. Первый вопрос, который стоит себе задать при появлении желания собрать пакет с какой-нибудь программой, библиотекой или документацией - а точно ли мне нужно этим заниматься? Не проделал ли кто-нибудь уже работу за меня? В 95% случаев желаемый пакет найдётся для Ubuntu в Launchpad; у Debian нет такой мощной инфраструктуры, поэтому дела там обстоят немного хуже, но не совсем плохо - есть список альтернативных репозиториев. Кроме того, разработчики некоторого программного обеспечения предоставляют свои репозитории с готовым к употреблению софтом, например, система мониторинга Sensu. Ещё раз для закрепления: не делайте уже проделанную кем-либо работу, если конечной целью является установка пакета и дальнейшее его использование. Если же вы желаете научиться собирать пакеты, то переходите к следующим параграфам.

Подготовка к сборке пакета §

Хорошим подспорьем в подготовке к сборке будет уже готовый пример. Возьмём для этого программу Lightspeed, которая имеется в официальных репозиториях Debian и Ubuntu. Это обычная графическая программа, написанная на языке C и использующая скрипт ./configure для генерации Makefile. Помимо самих пакетов, в официальных репозиториях распространяются также и их исходные коды. Для получения исходных кодов Lightspeed перейдём в любую удобную нам для сборки пакета директорию и выполним команду apt-get source lightspeed. В результате мы получим три файла и одну директорию: файл с упакованным diff исходников(*.diff.gz), файл с подписанным PGP-ключом описанием пакета(.dsc), файл с упакованным оригинальным исходным кодом(*.orig.tar.gz) и директория с подготовленными к сборке исходниками. Внутри неё есть директория debian, которая по факту является описанием процесса сборки. Забегая немного вперёд, скажу что практически в любой экостистеме централизованного распространения программного обеспечения есть понятие сборочные зависимости. Это программы, необходимые исключительно для превращения исходного кода в нечто готовое для употребления. Для установки сборочных зависимостей программы Lightspeed выполним команду sudo apt-get build-dep lightspeed. Теперь же исследуем содержимое директории debian.

Файл control §

Пожалуй, это основной файл, руководящий процессом сборки. Основнее только rules, но до него мы ещё дойдём. В файле control описаны информационные сущности пакета: что, для чего, от чего зависим, какие пакеты собираем(да, из одного дерева исходников можно собирать несколько пакетов) и так далее. Первой в описании всегда следует директива Source и всё, что за ней следует. Здесь мы видим несколько пунктов:

Далее следуют директивы, описывающие бинарные пакеты, собираемые из исходных кодов:

Файл rules §

Файл changelog §

Файлы . §