Ubuntu logo

Packaging Guide

11. Традиционные методы создания пакетов

Большая часть данного руководства относится к Ubuntu Distributed Development (UDD), которое использует распространяемую версию системы управления (DVCS) Bazaar для получения источников пакетов и отправки фиксов через предложения о слияниях. В этой статье мы обсудим так называемые “традиционные” методы создания пакетов. До того как Bazaar стали применять в разработках Ubuntu, помочь Ubuntu можно было стандартными способами.

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

11.1. Получение исходного кода

Чтобы получить пакет исходного кода, можно просто набрать:

$ apt-get source <package_name>

Но у этого метода есть некоторые недостатки. Он скачивает версию исходного кода, которая доступна в вашей системе. Скорее всего, у вас установлен текущий стабильный выпуск, а вы собираетесь внести изменения в пакет в разрабатываемом выпуске. К счастью, пакет ubuntu-dev-tools предоставляет вспомогательный сценарий:

$ pull-lp-source <package_name>

По умолчанию будет загружена самая свежая версия из разрабатываемого выпуска. Можно также указать версию выпуска Ubuntu следующим образом:

$ pull-lp-source <package_name> trusty

чтобы вытащить источник из релиза trusty, либо:

$ pull-lp-source <package_name> 1.0-1ubuntu1

чтобы скачать версию пакета 1.0-1ubuntu1. Для получения дополнительной информации о команде воспользуйтесь man pull-lp-source.

Для примера, давайте представим, что мы получили отчёт об ошибке, в котором говорится, что вместо “colour” в описании xicc должно быть “color,” и мы хотим это исправить. (Примечание: это просто пример чего-то, что можно изменить, а не реальная ошибка.) Чтобы получить исходный код, введите:

$ pull-lp-source xicc 0.2-3

11.2. Создание Debdiff

Файл debdiff показывает различия между двумя пакетами Debian. Имя команды, используемой для его создания, тоже debdiff. Она является частью пакета devscripts. Смотрите man debdiff для подробной информации о ней. Чтобы сравнить два пакета исходного кода, передайте команде в качестве аргумента два файла dsc:

$ debdiff <package_name>_1.0-1.dsc <package_name>_1.0-1ubuntu1.dsc

Чтобы продолжить наш пример, давайте отредактируем debian/control и «исправим» нашу «ошибку»:

$ cd xicc-0.2
$ sed -i 's/colour/color/g' debian/control

Мы также должны соблюдать Спецификации Обслуживания Debian<MaintFieldSpec_> и редактировать debian/control для замены:

Maintainer: Ross Burton <ross@debian.org>

на:

Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
XSBC-Original-Maintainer: Ross Burton <ross@debian.org>

Для этого можно воспользоваться инструментом update-maintainer (из пакета ubuntu-dev-tools).

Не забудьте задокументировать ваши изменения в debian/changelog с помощью dch -i, после чего мы можем сгенерировать новый пакет исходного кода:

$ debuild -S

Теперь можно проверить наши изменения с помощью debdiff:

$ cd ..
$ debdiff xicc_0.2-3.dsc xicc_0.2-3ubuntu1.dsc | less

Чтобы создать файл патча, который можно отправить другим или приложить к отчёту об ошибке для одобрения, выполните:

$ debdiff xicc_0.2-3.dsc xicc_0.2-3ubuntu1.dsc > xicc_0.2-3ubuntu1.debdiff

11.3. Применение Debdiff

Чтобы применить debdiff, нужно иметь исходный код версии, на основе которой он был создан:

$ pull-lp-source xicc 0.2-3

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

$ cd xicc-0.2

Фактически, debdiff похож на обычный файл патча. Примените его, как обычно, с помощью:

$ patch -p1 < ../xicc_0.2.2ubuntu1.debdiff