Ubuntu logo

Packaging Guide

2. Підготовка

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

  • Встановлення проґрам для роботи з пакунками. Вони включають у себе:

    • специфічні для Ubuntu засоби створення пакунків

    • криптографічну проґраму, яка дозволить іншим переконатися, що робота виконана саме Вами

    • додаткові проґрами шифрування, що забезпечують безпечне передавання файлів

  • Створення й налаштування облікового запису на Launchpad

  • Налаштування Вашого середовища розробки для полегшення локальної збірки пакунків, взаємодії з іншими розробниками й відправки Ваших змін на Launchpad.

Примітка

Рекомендується виконувати роботу зі створення пакунків у поточній розроблюваній версії Ubuntu. Це дозволить Вам тестувати зміни у тому ж середовищі, у яке вони у дійсності потім будуть внесені.

Не бентежтеся, Ви можете скористатися Testdrive або chroots для безпечного використання розроблюваної версії (релізу)

2.1. Встановлення базового проґрамного забезпечення для створення пакунків

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

$ sudo apt-get install gnupg pbuilder ubuntu-dev-tools bzr-builddeb apt-file

Нотатка: Починаючи з Ubuntu 11.10 «Oneiric Ocelot» (або якщо увімкнений репозиторій Backports у поточному підтримуваному випуску), наступна команда встановлює усе вищезгадане й інші інструменти, що часто використовуються у розробці Ubuntu:

$ sudo apt-get install packaging-dev

Ця команда встановить такі проґрами:

  • gnupgGNU Privacy Guard містить інструменти, які знадобляться для створення криптографічного ключа, за допомогою якого Ви будете підписувати файли, які бажаєте завантажити на Launchpad

  • pbuilder – інструмент для створення готових до подальшого розповсюдження збірок пакунків у чистому та ізольованому середовищі.

  • ubuntu-dev-tools (і його безпосередня залежність devscripts) – набір інструментів, що спрощують багато завдань зі створення пакунків.

  • bzr-builddeb (і його залежність – bzr) – керування розподіленими версіями за допомогою Bazaar (новий спосіб роботи з пакунками для Ubuntu), що спрощує спільну роботу багатьох людей над одним й тим самим кодом й що дозволяє з легкістю об’єднувати результати їх праці один з одним.

  • apt-file надає простий спосіб знайти двійковий пакунок, що містить заданий файл.

2.1.1. Створення ключа GPG

GPG — абревіятура для GNU Privacy Guard, реалізуючого стандарт OpenPGP, який дозволяє підписувати та шифрувати повідомлення й файли. Це корисно у ряді ситуацій. У нашому випадку важливо, що Ви можете використовувати свій ключ для підписування файлів, щоб можна було переконатися, що саме Ви з ними працювали. Якщо Ви завантажите пакунок джерельного коду на Launchpad, він буде прийнятий лише у тому випадку, якщо можна точно визначити, хто саме відправив пакунок.

Щоб згенерувати новий ключ GPG, наберіть:

$ gpg --gen-key

GPG спочатку спитає, який тип ключа Ви бажаєте створити. Типовий вибір (RSA и DSA) цілком влаштує. Далі він спитає вказати розмір ключа. Типовий розмір (на цей час 2048) влаштує, але 4096 надійніше. Далі, проґрама спитає, чи бажаєте Ви, щоб термін дії ключа вийшов через якийся час. Безпечніше відповісти “0”, що означає, що термін дії не сплине ніколи. Останнє питання буде про Ваше ім’я та адресу електронної пошти. Просто виберіть адресу, якою Ви користуєтеся при розробці Ubuntu, додаткові адреси можна буде додати потім. Додавати коментар не обов’язково. Після цього потрібно вказати надійне парольне гасло (парольне гасло — це просто пароль, у якому дозволяється використовувати пробіли).

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

Коли процес буде завершено, Ви отримаєте повідомлення типу такого:

pub   4096R/43CDE61D 2010-12-06
      Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
uid                  Daniel Holbach <dh@mailempfang.de>
sub   4096R/51FBE68C 2010-12-06

У даному випадку, 43CDE61D — це ідентифікатор ключа (key ID).

Потім потрібно завантажити відкриту (public) частину Вашого ключа на сервер ключів, щоб усі могли ідентифікувати повідомлення і файли, як відправлені Вами. Для цього уведіть:

$ gpg --send-keys --keyserver keyserver.ubuntu.com <KEY ID>

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

2.1.2. Створення ключа SSH

SSH або Secure Shell — це протокол, який дозволяє безпечно обмінюватися даними мережею. Звичайною практикою є використання SSH для доступу й відкриття командної оболонки на іншому комп’ютері й для безпечної пересилки файлів. З нашою метою ми переважно будемо використовувати SSH для безпечної відправки пакунків джерельного коду на Launchpad.

Щоб згенерувати ключ SSH, уведіть:

$ ssh-keygen -t rsa

Типове ім’я файлу цілком влаштує, тож можете залишити його як є. З метою безпеки настійно рекомендується вказати парольне гасло.

2.1.3. Налаштування pbuilder

pbuilder дозволяє локально збирати пакунки на Вашому комп’ютері. Він слугує декільком цілям:

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

  • Зникає необхідність у локальному встановленні усіх збірочних залежностей

  • Можна налаштувати декілька екземплярів для різних випусків Ubuntu і Debian

Налаштувати pbuilder дуже просто. Наберіть

$ pbuilder-dist <release> create

де <release> — це, наприклад raring, saucy, trusty або, у випадку Debian, sid. Виконання команди займе певний час, оскільки будуть завантажені усі пакунки, необхідні для “мінімального встановлення”. Втім, при цьому використовується кешування.

2.2. Підготовка до роботи з Launchpad

Після того, як базова локальна конфігурація створена, наступним кроком буде налаштування системи для роботи з Launchpad. У цьому розділі ми сфокусуємося на таких питаннях:

  • Що таке Launchpad й як створити обліковий запис на Launchpad

  • Завантаження Ваших ключів GPG та SSH на Launchpad

  • Налаштування Bazaar для роботи з Launchpad

  • Налаштування Bash для роботи з Bazaar

2.2.1. Відомості про Launchpad

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

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

Крім хостингу Ubuntu, Launchpad може надавати місце для будь-якого вільного проґрамного проєкту. Додаткову інформацію дивіться на Довідкових вікі-сторінках Launchpad

2.2.2. Створення облікового запису на Launchpad

Якщо в Вас ще немає облікового запису на Launchpad, Ви легко можете створити його. Якщо обліковий запис є, але Ви не пам’ятаєте свій Launchpad ID, його можна дізнатися, зайшовши на https://launchpad.net/~ і поглянувши на частину після ~ в URL.

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

При реєстрації нового облікового запису Launchpad відправить Вам листа з посиланням, яке потрібно відкрити у оглядачі тенет, щоб підтвердити вказану Вами адресу електронної пошти. Якщо Ви не отримали листа, перевірте теку небажаної пошти (спаму).

Довідкова сторінка нового облікового запису на Launchpad містить додаткову інформацію про процес та додаткові налаштування, які можна зробити.

2.2.3. Завантаження Вашого ключа GPG на Launchpad

Спочатку потрібно отримати відбиток та ідентифікатор ключа.

Щоб взнати свій відбиток ключа GPG (fingerprint), наберіть:

$ gpg --fingerprint email@address.com

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

pub   4096R/43CDE61D 2010-12-06
      Key fingerprint = 5C28 0144 FB08 91C0 2CF3  37AC 6F0B F90F 43CD E61D
uid                  Daniel Holbach <dh@mailempfang.de>
sub   4096R/51FBE68C 2010-12-06

Потім виконайте цю команду для відправки Вашого ключа на сервер ключів Ubuntu:

$ gpg --keyserver keyserver.ubuntu.com --send-keys 43CDE61D

де 43CDE61D слід замінити на Ваш ідентифікатор ключа (він у першому рядку виводу попередньої команди). Тепер можна імпортувати свій ключ на Launchpad.

Зайдіть на https://launchpad.net/~/+editpgpkeys й скопіюйте дані з рядка «Key fingerprint» у текстове поле. У наведеному вище прикладі це буде 5C28 0144 FB08 91C0 2CF3 37AC 6F0B F90F 43CD E61D. Потім клацніть «Import Key».

Launchpad скористається відбитком ключа для перевірки наявності Вашого ключа на сервері ключів Ubuntu й, у випадку успіху, відправить Вам зашифроване повідомлення електронної пошти, з пропозицією підтвердити імпорт ключа. Перевірте свою пошту й прочитайте листа, отриманого з Launchpad. Якщо Ваш клієнт електронної пошти підтримує шифрування OpenPGP, він запропонує увести пароль, який Ви вибрали при створенні ключа GPG. Уведіть пароль, потім клацніть на посиланні, аби підтвердити, що цей ключ належить Вам.

Launchpad шифрує пошту, використовуючи Ваш публічний ключ, тож Ви зможете переконатися, що ключ Ваш. Якщо Ви користуєтеся поштовим клієнтом Thunderbird, який використовується в Ubuntu типово, для дешифрування повідомлення можете встановити доповнення Enigmail. Якщо Ваша поштова проґрама не підтримує шифрування OpenPGP, скопіюйте зашифрований вміст листа у буфер обміну, наберіть у терміналі gpg й вставте вміст листа у вікно терміналу.

Повернувшись на сайт Launchpad, скористайтеся кнопкою «Confirm», щоб Launchpad завершив імпорт Вашого ключа OpenPGP.

Додаткову інформацію можна знайти на https://help.launchpad.net/YourAccount/ImportingYourPGPKey

2.2.4. Завантаження Вашого ключа SSH на Launchpad

Відкрийте у оглядачі тенет https://launchpad.net/~/+editsshkeys, а у текстовому редакторі файл ~/.ssh/id_rsa.pub. Це відкрита частина Вашого ключа SSH, тому можна без побоювань надати до неї спільний доступ на Launchpad. Скопіюйте вміст файлу й вставьте його у текстове поле на веб-сторінці з міткою «Add an SSH key». Потім клацніть «Import Public Key».

Для додаткової інформації про цей процес відвідайте сторінку про створення ключової пари SSH на Launchpad.

2.2.5. Налаштування Bazaar

Bazaar — це інструмент, який ми використовуємо для зберігання змін у коді, у логічний і передбачуваний спосіб, а також обміну пропонованими змінами й їх злиття, навіть у тому випадку, якщо розробка ведеться параллельно декількома людьми. Він використовується у новому методі роботи з пакунками Ubuntu — Ubuntu Distributed Development.

Щоб повідомити Bazaar про те, хто Ви, просто наберіть:

$ bzr whoami "Bob Dobbs <subgenius@example.com>"
$ bzr launchpad-login subgenius

whoami повідомить Bazaar, яке ім’я й адресу електронної пошти він повинен використовувати для Ваших коммітів. За допомогою launchpad-login Ви вказуєте свій Launchpad ID. Це код, який ідентифікує Ваш обліковий запис на Launchpad.

Нотатка: якщо Ви не пам’ятаєте свій ідентифікатор, перейдіть на https://launchpad.net/~ й подивіться, куди Вас переспрямовує ця сторінка. Частина URL після символу «~» — це й є Ваш Launchpad ID.

2.2.6. Налаштування командної оболонки

Як і Bazaar, інструментам створення пакунків Debian/Ubuntu знадобиться деяка інформація про Вас. Просто відкрийте ~/.bashrc у текстовому редакторі й додайте внизу щось типу цього:

export DEBFULLNAME="Bob Dobbs"
export DEBEMAIL="subgenius@example.com"

Потім збережіть файл й перезапустіть термінал або наберіть:

$ source ~/.bashrc

(Якщо Ви не користуєтеся стандартною командною оболонкою bash, відредагуйте конфігураційний файл тієї оболонки, яку Ви полюбляєте використовувати.)