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 гілки є тим самим, що й пакунки у архіві, будь-яка команда має бути у змозі з ними працювати.