Ubuntu logo

Packaging Guide

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

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

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

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

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

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

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

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

Примітка

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

Don’t want to install the latest Ubuntu development version of Ubuntu? Spin up an LXD container.

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

There are a number of tools that will make your life as an Ubuntu developer much easier. You will encounter these tools later in this guide. To install most of the tools you will need run this command:

$ sudo apt install gnupg pbuilder ubuntu-dev-tools apt-file

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

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

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

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

  • 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

where <release> is for example xenial, zesty, artful or in the case of Debian maybe sid or buster. This will take a while as it will download all the necessary packages for a “minimal installation”. These will be cached though.

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

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

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

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

  • Configure your shell to recognize you (for putting your name in changelogs)

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. Налаштування командної оболонки

The Debian/Ubuntu packaging tools need to learn about you as well in order to properly credit you in the changelog. Simply open your ~/.bashrc in a text editor and add something like this to the bottom of it:

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

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

$ source ~/.bashrc

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