Ubuntu logo

Packaging Guide

5. Демонстрація: виправлення помилки в Ubuntu

Хоч техніка виправлення помилки однакова для будь-яких помилок, кожна помилка все ж у чомусь відрізняється від інших. Даний приклад виправлення конкретної помилки може допомогти Вам зрозуміти, що зазвичай потрібно прийняти до уваги.

Примітка

Під час написання даної статті ця помилка ще не була виправлена. Можливо, до того часу, коли Ви будете читати статтю, помилку вже виправлять. Вважайте це просто прикладом й постарайтеся адаптувати його до конкретної проблеми, з якою Ви зіштовхнетеся.

5.1. Підтвердження проблеми

Припустимо, у описі пакунку bumprace відсутня інформація про його домашню сторінку. У якості першого кроку, слід перевірити, чи не виправлена вже ця помилка. Зробити це просто: подивіться у Центрі додатків або запустіть:

apt-cache show bumprace

Вивід команди повинен бути приблизно таким:

Package: bumprace
Priority: optional
Section: universe/games
Installed-Size: 136
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Christian T. Steigies <cts@debian.org>
Architecture: amd64
Version: 1.5.4-1
Depends: bumprace-data, libc6 (>= 2.4), libsdl-image1.2 (>= 1.2.10),
         libsdl-mixer1.2, libsdl1.2debian (>= 1.2.10-1)
Filename: pool/universe/b/bumprace/bumprace_1.5.4-1_amd64.deb
Size: 38122
MD5sum: 48c943863b4207930d4a2228cedc4a5b
SHA1: 73bad0892be471bbc471c7a99d0b72f0d0a4babc
SHA256: 64ef9a45b75651f57dc76aff5b05dd7069db0c942b479c8ab09494e762ae69fc
Description-en: 1 or 2 players race through a multi-level maze
 In BumpRacer, 1 player or 2 players (team or competitive) choose among 4
 vehicles and race through a multi-level maze. The players must acquire
 bonuses and avoid traps and enemy fire in a race against the clock.
 For more info, see the homepage at http://www.linux-games.com/bumprace/
Description-md5: 3225199d614fba85ba2bc66d5578ff15
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Origin: Ubuntu

У якості контрприкладу можна привести gedit, де домашня сторінка вказана:

$ apt-cache show gedit | grep ^Homepage
Homepage: http://www.gnome.org/projects/gedit/
$

У деяких випадках Ви можете зіштовхнутися з тим, що проблема, вирішення якої Ви шукаєте, вже кимось усунена. Щоб уникнути даремного витрачення часу й праці, має сенс проробити деяку детективну роботу.

5.2. Вивчення ситуації з помилкою

Спочатку потрібно перевірити, чи не існує вже повідомлення про цю помилку в Ubuntu. Можливо, хтось вже працює над її виправленням, або ми можемо якось внести свій внесок у вирішення цієї проблеми. Для Ubuntu ми поглянемо на https://bugs.launchpad.net/ubuntu/+source/bumprace й побачимо, що відкритого звіту про нашу ваду там немає.

Примітка

Для Ubuntu URL https://bugs.launchpad.net/ubuntu/+source/<пакунок> завжди приводить на сторінку помилок у вказаномум пакунку джерельного коду.

У Debian, який є основним джерелом пакунків Ubuntu ми поглянемо на http://bugs.debian.org/src:bumprace й також не знайдемо там повідомлення про нашу ваду.

Примітка

Для Debian URL http://bugs.debian.org/src:<пакет> завжди приводить на сторінку помилок у вказаному пакунку джерельного коду.

Помилка, над якою ми працюємо, незвичайна у тому сенсі, що вона стосується лише пакункування bumprace. Якби це була вада у джерельному коді, корисно було б також перевірити систему відстеження помилок апстріму. Нажаль, ця процедура часто різниться для кожного окремого пакунку, але завжди можна скористатися пошуком в інтернеті, й у більшості випадків Ви з’ясуєте, що вона виявиться не такою вже й складною.

5.3. Пропозиція допомоги

Якщо Ви виявили відкриту ваду, яка ще нікому не призначена, й Ви готові взятися за її усунення, слід написати коментар з Вашим вирішенням. Включіть у нього щонайбільше інформації: При яких обставинах з’являється помилка? Як Ви її виправили? Чи тестували Ви свій спосіб усунення помилки?

Якщо повідомлення про помилку не було зареєстроване, Ви можете його створити. Подумайте над двома речами: Може бути, зміна настільки мала, що достатньо просто попрохати когось застосувати її? Може бути, в Вас вийшло лише частково виправити ваду, й Ви бажаєте поділитися Вашою часткою?

Буде чудово, якщо Ви можете запропонувати свою допомогу, й вона, без сумніву, буде з готовністю прийнята.

5.4. Виправлення помилки

У даному конкретному прикладі недостатньо просто знайти веб-сайт bumprace й визначити адресу його домашньої сторінки. Потрібно переконатися, що сайт працює, й він не є просто каталогом різних проґрам. http://www.linux-games.com/bumprace/ виглядає відповідним місцем.

Щоб взятися за ваду у пакунку джерельного коду, нам знадобиться цей джерельний код, й ми легко можемо отримати його, набравши:

bzr branch ubuntu:bumprace

Якщо Ви прочитали огляд каталогу Debian, то пам’ятайте, ймовірно, що домашня сторінка вказується у першій частині debian/control, у секції, що починається з Source:.

Тож тепер ми маємо виконати команду:

cd bumprace

й відредагувати debian/control, додавши Homepage: http://www.linux-games.com/bumprace/. У кінці першої секції має бути відповідне місце для цього. Після внесення змін збережіть файл.

Якщо тепер Ви виконаєте:

bzr diff

Ви повинні побачити щось типу цього:

=== modified file 'debian/control'
--- debian/control      2012-05-14 23:38:14 +0000
+++ debian/control      2012-09-03 15:45:30 +0000
@@ -12,6 +12,7 @@
                libtool,
                zlib1g-dev
 Standards-Version: 3.9.3
+Homepage: http://www.linux-games.com/bumprace/

 Package: bumprace
 Architecture: any

Синтаксис diff дуже простий для розуміння. + вказує рядок, який був доданий. У нашому випадку його було додано безпосередньо перед другою секцією, що починається з Package, яка вказує на готовий двійковий пакунок.

5.5. Документування виправлення

Важливо пояснити своїм колегам - розробникам, що саме Ви зробили. Якщо Ви наберете:

dch -i

це запустить редактор, з шаблоном запису у changelog, який Вам залишається лише дозаповнити. У нашому випадку повинне підійти щось типу debian/control: Added project's homepage. Потім збережіть файл. Щоб ще раз перевірити, що усе працює, наберіть:

bzr diff debian/changelog

й Ви побачите щось типу цього:

=== modified file 'debian/changelog'
--- debian/changelog    2012-05-14 23:38:14 +0000
+++ debian/changelog    2012-09-03 15:53:52 +0000
@@ -1,3 +1,9 @@
+bumprace (1.5.4-1ubuntu1) UNRELEASED; urgency=low
+
+  * debian/control: Added project's homepage.
+
+ -- Peggy Sue <peggy.sue@example.com>  Mon, 03 Sep 2012 17:53:12 +0200
+
 bumprace (1.5.4-1) unstable; urgency=low

   * new upstream version, sound and music have been removed (closes: #613344)

Декілька додаткових міркувань:

  • Якщо в Вас є посилання на ваду на Launchpad, яку виправляє Ваша зміна, додайте (LP: #<номер помилки>) у запис changelog, наприклад: (LP: #123456).

  • Якщо Ви бажаєте, щоб Ваше виправлення було включено у Debian, синтаксис для вади в Debian буде (Closes: #<номер помилки>), наприклад: (Closes: #123456).

  • Якщо це посилання на повідомлення про помилку в апстрімі або у Debian, або на обговорення у поштовій розсилці, також вкажіть її.

  • Намагайтеся робити перенесення рядків після 80 символів.

  • Намагайтеся викладати детально: не варто писати цілий твір, але вкажіть достатньо інформації, щоб зрозуміти могла будь-яка людина (навіть якщо вона не занурювався глибоко у цю проблему).

  • Вкажіть, як і де Ви виправили помилку.

5.6. Тестування виправлення

Щоб перевірити виправлення, Вам знадобиться налаштувати своє середовище розробки, потім зібрати пакунок, встановити його й перевірити, що проблему усунено. У нашому випадку це будуть наступні дії:

bzr bd -- -S
pbuilder-dist <current Ubuntu release> build ../bumprace_*.dsc
dpkg -I ~/pbuilder/*_result/bumprace_*.deb

Першою командою ми створюємо пакунок джерельного коду з гілки, потім збираємо його за допомогою pbuilder, після чого перевіряємо, чи правильно додано поле домашньої сторінки у пакунку що отримали.

Примітка

У більшості випадків Вам доведеться дійсно встановити пакунок, щоб перевірити правильність його роботи. Наш випадок на багато простіший. Якщо збірка завершилася з успіхом, готові двійкові пакунки можна буде знайти в ~/pbuilder/<випуск>_result. Встановіть їх за допомогою sudo dpkg -i <пакунок>.deb або подвійного клацу на них у файловому менеджері.

Після того, як ми переконалися, що проблема вирішена, наступним кроком буде поділитися своїм рішенням з усім світом.

5.7. Застосування виправлення

It makes sense to get the fix included as Upstream as possible. Doing that you can guarantee that everybody can take the Upstream source as-is and don’t need to have local modifications to fix it.

У нашому випадку ми встановили, що помилка відноситься лише до пакунків Ubuntu і Debian. Оскільки Ubuntu заснована на Debian, ми повинні відправити випралення в Debian. Після того, як в Debian з’явиться виправлений пакунок, він потрапляє також і в Ubuntu. Наша помилка не критична, тому можна так зробити. Якщо ж важливо застосувати виправлення як найшвидше, то необхідно відправити виправлення у декілька баг-трекерів (якщо воно зачепає відповідні проєкти).

Щоб відправити латку в Debian, просто наберіть:

submittodebian

Ця команда проведе Вас через декілька кроків, необхідних для оформлення звіту про ваду й відправки його у правильне місце. Обов’язково продивіться Ваші зміни, щоб переконатися, що там немає нічого зайвого.

Комунікація має дуже велике значення, тому при додаванні опису надайте добре та дружнє пояснення.

Якщо усе пройшло добре, то Ви повинні отримати поштове повідомлення від системи відстежування помилок Debian з додатковою інформацією. Інколи це може зайняти декілька хвилин.

Примітка

Якщо проблема спостерігається лише в Ubuntu, Ви можете скористатися інструкцією з пошуку спонсора.

5.8. Додаткові зауваження

Якщо Ви можете внести у пакунок декілька тривіальних виправлень одразу, зробіть це. Це дозволить розробникам швидше розглянути й застосувати ці зміни.

Якщо Ви бажаєте внести декілька великих змін, краще посилати латки або запити на злиття окремо для кожної зміни. Це простіше, якщо вже створені індивідуяльні повідомлення про вади.