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

Существует несколько вещей, которые нужно сделать перед началом разработки в Ubuntu. Эта статья поможет вам подготовить компьютер к работе с пакетами и отправке ваших пакетов на платформу хостинга Ubuntu — Launchpad. Вот что здесь описано:

- Установка программ для работы с пакетами. Они включают в себя:

  - специфичные для Ubuntu утилиты создания пакетов

  - криптографическую программу, которая позволит другим удостовериться, что работа выполнена именно вами

  - дополнительные программы шифрования, обеспечивающие безопасную передачу файлов

- Создание и настройка учётной записи на Launchpad

- Настройка вашей среды разработки для облегчения локальной сборки пакетов, взаимодействия с другими разработчиками и отправки ваших изменений на Launchpad.

Примечание

Рекомендуется выполнять работу по созданию пакетов в текущей разрабатываемой версии Ubuntu. Это позволит вам тестировать изменения в той же среде, в которую они в действительности затем будут внесены.

Don’t worry though, you can use Testdrive or chroots to safely use the development release.

## 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

Эта команда установит следующие программы:

- `gnupg` – GNU 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

where <release> is for example raring, saucy, trusty or in the case of Debian maybe sid. 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

> - Настройка 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

First, you will need to get your fingerprint and key ID.

Чтобы узнать свой отпечаток ключа 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

Then run this command to submit your key to Ubuntu keyserver:

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

where `43CDE61D` should be replaced by your key ID (which is in the first line of output of the previous command). Now you can import your key to 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, отредактируйте конфигурационный файл той оболочки, которую вы предпочитаете использовать.)