Ubuntu logo

Packaging Guide

3. Распределенная разработка Ubuntu — введение

Это руководство фокусируется на работе с пакетами с использованием метода Ubuntu Distributed Development (UDD).

Ubuntu Distributed Development (UDD) — это новая технология разработки пакетов Ubuntu, использующая инструменты, процессы и последовательности действий, характерные для типичной схемы разработки программ, основанной на распределённой системе управления версиями (DVCS). DVCS, используемая в UDD — это Bazaar.

3.1. Ограничения традиционных методов создания пакетов

Традиционно пакеты Ubuntu хранятся в архивных tar-файлах. Традиционный пакет исходного кода состоит из tar-файла с исходным кодом из апстрима, “debian” tar-файла (или сжатого diff-файл для более старых пакетов), содержащего набор входных файлов для создания пакета, и файла .dsc с метаданными. Чтобы посмотреть на традиционный пакет, выполните команду:

$ apt-get source kdetoys

Она загрузит исходники из апстрима kdetoys_4.6.5.orig.tar.bz2, набор входных файлов kdetoys_4.6.5-0ubuntu1.debian.tar.gz и метаданные kdetoys_4.6.5-0ubuntu1~ppa1.dsc. Если у вас установлен dpkg-dev, она извлечёт их содержимое и предоставит вам пакет исходного кода.

Традиционные методы создания пакетов отредактируют и загрузят эти файлы. Однако это дает ограниченные возможности для сотрудничества с другими разработчиками, изменения должны передаваться через файлы diff без центрального способ отслеживания них, плюс два разработчики не могут вносить изменения одновременно. Поэтому большинство команд разработчиков перешли от традиционного метода создания пакетов к системе контроля версий. Это позволяет нескольким разработчикам работать над пакетом сообща. Однако нет прямой связи между системы контроля версий и архивом пакетов, поэтому их необходимо будет вручную синхронизировать. Поскольку каждая команда работает в собственной системе контроля версий перспективный разработчик должен сначала разобраться где, что и как получить пакет, прежде чем они смогут работать с этим пакетом.

3.2. Распределенная разработка Ubuntu

С Ubuntu Distributed Development все пакеты в архиве Ubuntu (и Debian) автоматически импортируются в ветки Bazaar на нашем сайте хостинга кода Launchpad. Изменения можно вносить напрямую в эти ветки шагами увеличения любым пользователем, у которого есть доступ. Изменения также можно вносить в раздвоенные ветки и соединять из обратно при помощи Предложений и Слиянии (Merge Proposals), когда они станут достаточно большими для рассмотрения, либо если созданы кем-либо без прямого доступа.

UDD ветки все находятся в стандартном местоположении, поэтому отладка будет легкой:

$ bzr branch ubuntu:kdetoys

История объединений включает две отдельные ветки, одну для источника апстрима и другую, которая добавит директорию пакета debian/:

$ cd kdetoys
$ bzr qlog

(Эта команда использует в качестве графического интерфейса qbzr. Для вывода в консоль, запустите log вместо qlog.)

./_images/kdetoys-udd-branch.png

UDD ветка kdetoys помечает полный пакет для каждой версии, загруженной в Ubuntu серыми кругами и версии источника апстрима - зелеными. Версии помечаются либо версиями Ubuntu (например, 4:4.2.29-0ubuntu1) или для веток апстрима - версией апстрима (upstream-4.2.96).

Многие пакеты Ubuntu основаны на пакетах в Debian, UDD также импортирует и пакет Debian в наши ветки. В ветке kdetoys выше версии Debian из unstable после объединения помечены синими кружочками, в то время как из Debian experimental после объединения помечены желтыми. Релизы Debian помечены номерами своих версий, например, 4:4.2.2-1.

Таким образом из UDD-ветки вы можете увидеть полную историю изменений пакета и сравнить любые две версии. Например, чтобы увидеть различия между версией 4.2.2 в Debian и 4.2.2 в Ubuntu, используйте:

$ bzr qdiff -r tag:4:4.2.2-1..tag:4:4.2.2-1ubuntu1

(Эта команда использует графический интерфейс qbzr. Запустите diff вместо qdiff для вывода в консоль.)

./_images/kdetoys-udd-diff.png

Здесь мы можем ясно увидеть, что было изменено в Ubuntu по сравнению с Debian-версией. Очень удобно.

3.3. Bazaar

Ветки UDD используют Bazaar — распределённую систему управления версиями, которая проста в использовании для тех, кто знаком с такими популярными системами, как Subversion, и в то же время предоставляет всю мощь Git.

Чтобы сделать пакет с UDD Вам нужно знать основы использования Bazaar для управления файлами. Для получения базовых навыков работы с Bazaar смотрите Пятиминутное обучение Bazaar и Руководство по использованию Bazaar.

3.4. Ограничения UDD

Ubuntu Distributed Development — новый метод работы с пакетами Ubuntu. В настоящее время он имеет некоторые существенных ограничения:

  • Создание полной ветки с историей может отнять много времени и сетевых ресурсов. Возможно Вам быстрее будет сделать легкую отладку bzr checkout --lightweight ubuntu:kdetoys, но тогда потребуется сетевой доступ для любых дальнейших операций bzr.

  • Работа над патчами очень кропотливая. Патчи можно рассматривать как разветвленную переработку системы управления, таки образом мы получаем RCS поверх RCS.

  • Нет способа создавать билды напрямую из веток. Нужно создавать исходный пакет и загружать его.

  • Некоторые пакеты не были успешно импортированы в ветки UDD. Последние версии Bazaar автоматически будут уведомлять вас в случае возникновения подобной ситуации. Перед началом работы с веткой Вы можете вручную поставить отметку status of the package importer.

Над всем вышеперечисленным сейчас ведется работа и ожидается, что UDD вскоре станет основным способом работы над пакетами Ubuntu. Тем не менее, сейчас большинство команд Ubuntu еще не работали с ветками UDD. Но так как UDD ветки являются тем же самым, как и пакеты в архиве, любой команде не составит труда с ними работать.