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, отредактируйте конфигурационный файл той оболочки, которую вы предпочитаете использовать.)