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