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