Шаг 0. Регистрация на Launchpad

Если вы уже зарегистрированы на Launchpad можете пропустить этот шаг.

Перейдите по ссылке https://login.launchpad.net/+new_account и пройдите регистрацию. Это позволит вам создавать PPA, участвовать в обсуждении багов, править переводы и многое другое.

Шаг 1. Создание цифрового ключа

Цифровым ключем в дальнейшем будут подписываться все ваши пакеты. Именно при помощи него будет подтверждаться то, что пакет был выложен именно вами, а не кем-то другим. Более подробная информация о ключах содержится в этой статье.

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

gpg --gen-key

Укажите тип ключа DSA and Elgamal, размер ключа оставьте по умолчанию - 2048, срок - без ограничения срока действительности. Подтвердите что вы правильно ввели всю информацию. Теперь укажите свои имя и фамилию, маленький коментарий и адрес электронной почты. Подтвердите, что вся информация введена правильно. После этого программа начнет генерацию ключа. В процессе может появится надпись вроде этой:

Недостаточно случайных чисел.  Выполняйте какие-либо действия для того,
чтобы ОС могла получить больше случайных данных! (Необходимо ещё 145 байт)

Попробуйте что-то понабирать на клавиатуре и процесс пойдет дальше.

В итоге должно получится примерно следующее:

gpg: ключ B0CF7C64 помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.

gpg: проверка таблицы доверий
gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия
gpg: глубина: 0  корректных:   2  подписанных:   1  доверия: 0-, 0q, 0n, 0m, 0f, 2u
gpg: глубина: 1  корректных:   1  подписанных:   0  доверия: 0-, 0q, 0n, 0m, 1f, 0u
pub   2048D/B0CF7C64 2012-05-08
      Отпечаток ключа = BF0A D1A0 94EC 9396 803B  E256 F636 0EA4 B0CF 7C64
uid                  Baba Yaga (pensioner) <yaga@deepforest.ru>
sub   2048g/BED82F5A 2012-05-08

Нас интересует первая строчка, в ней указан ID ключа. В примере ID равен B0CF7C64.

Теперь отправим публичный ключ на сервер ключей:

gpg --send-keys --keyserver keyserver.ubuntu.com B0CF7C64
На этом этапе генирируются публичный и личный ключи. Личный ключ должен находится только у вас, иначе это поставит под угрозу безопасность PPA.

Шаг 2. Принятие Code of Conduct

Code of Conduct это документ, описывающий правила поведения в сообществе Ubuntu. Без подписания этого документа у вас не будет возможности использовать некоторые функции Launchpad, в том числе и создание PPA. Перевод этого документа можно прочитать в статье Кодекс поведения Ubuntu.

  • Перейдите по ссылке https://launchpad.net/codeofconduct
  • Нажмите Register an OpenPGP key
  • В поле Fingerprint введите отпечаток ключа, полученый в результате предыдущего щага и нажмите Import Key
  • На почту придет зашифрованное письмо. Почтовые клиенты (такие как Evolution) обычно предлагают расшифровать письмо. В противном случае можно скопировать текст письма в текстовый файл и выполнить команду

    gpg --decrypt /tmp/mail.txt

    где /tmp/mail.txt - файл с письмом.

    В конце расшифрованного письма будет ссылка на Launchpad, которой вы подтвердите что вы являетесь владельцом ключа.

  • Вновь перейдите на страницу https://launchpad.net/codeofconduct и скачайте Code of Conduct по ссылке Download the current Code of Conduct.
  • Подпишите скачанный файл коммандой:

    gpg --clearsign UbuntuCodeofConduct-1.1.txt

    Это создаст подписанный вашим ключом файл UbuntuCodeofConduct-1.1.txt.asc .

  • Перейдите на страницу https://launchpad.net/codeofconduct и нажмите на ссылку Sign it!. в появившееся поле Signed Code ввода вставьте все содержимое файла UbuntuCodeofConduct-1.1.txt.asc и нажмите Continue.

Шаг 3. Создание PPA

Перейдите на страницу своего профиля на Launchpad и найдите ссылку Create a new PPA. Заполните поля Display name и URL . Поле Description не обязательно для заполнения. При заполнении помните, что пользователи будут прописывать часть строки URL при добавлении PPA, поэтому его нужно делать максимально коротким, но при этом отражающем суть PPA. Описание Descriprion, будет выводится пользователям в терминал, при добавлении PPA, поэтому тоже не усердствуйте с объемом.

Шаг 4. Сборка пакетов для загрузки в PPA

Для загрузки в PPA используется специально подготовленные архивы source.changes, не пытайтесь загрузить в репозиторий .deb, пакеты. Инструкцию по «дебианизации» исходных кодов можно посмотреть в статье Сборка ПО и создание .deb-пакетов из исходников в Debian-системах.

Версионность

Если вы пакуете пакет, который уже есть в репозитории Ubuntu, необходимо убедится, что:

  • версия пакета, собранная вами заменяет существующую в репозитарии версию;
  • следующие версии пакета из репозитория Ubunt заменят ваш пакет.

Для того, чтобы добиться это используйте суффикс ppan (где n это номер ревизии пакета). Несколько примеров:

  • пакет из репозитария Ubuntu myapp_1.0-1 → пакет в PPA myapp_1.0-1ppa1
  • пакет из репозитария Ubuntu myapp_1.0-1ubuntu3 → пакет в PPA myapp_1.0-1ubuntu3ppa1

Версии пакетов должны быть уникальными. Если вы хотите использовать один и тот же пакет для разных выпусков Ubuntu (при условии, что он будет работать без перекомпиляции), вы можете воспользоваться функцией копирования пакетов.

Если же пакет не работает в других выпусках без пересборки, то прибавляйте к версии суффикс ~имя_выпуска (например myapp_1.0-1ubuntu3ppa1~lucid) и загружайте каждую версию отдельно.

Зависимости

Launchpad удовлетворяет сборочные зависимости (Build-Depends) используя:

  • последние версии пакетов из PPA в который производится загрузка
  • все секции основного репозитория Ubuntu – то есть main, restricted, universe и multiverse
  • опционально: другие PPA.

Шаг 5. Загрузка пакетов в PPA

Загрузка пакетов осуществляется утилитой dput.

sudo apt-get install dput

Настройка dput

Для удобства стоит настроить dput, для этого необходимо отредактировать файл ~/.dput.cf и привести его к следующему виду:

[ppa-stable]
fqdn = ppa.launchpad.net
method = ftp
incoming = ~<ваш_id>/<имя_ppa>/ubuntu/
login = anonymous
allow_unsigned_uploads = 0

<ваш_id>- ID вашей учетной записи или команды, отображается в строке URL браузера <имя_ppa>- название выбранного PPA. Вы можете настроить dput для работы с любым количеством PPA. Для этого достаточно добавить в файл ~/.dput.cf еще одну секцию настроек, аналогичную приведенным выше.

Загрузка пакета

Пакет загружается командой

dput ppa-stable <source.changes>

где <source.changes> – файл полученный во время подготовки исходного кода.

После успешной загрузки на почтовый ящик вашей учетной записи, а так же почтовый ящик, указанный в файле debian/changelog придет уведомление об успешной или неуспешной загрузке архива. Что значат ошибки в письмах можно посмотреть здесь. В случае успешной загрузки, через некоторое время начнется сборка пакета для доступных архитектур, лог файл сборки будет доступен к просмотру онлайн, в просмотре подробностей к пакету на странице PPA, а так же, в случае ошибки, будет прислана ссылка на просмотр лога на почту.

Копирование пакета для других релизов Ubuntu

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

  1. Нажмите View package details
  2. Далее нажмите Copy packages и отметить пакеты, которые хотите «размножить»
  3. Укажите Destination series выбрав целевую версию дистрибутива. При этом, нужно поставить точку в пункте Сopy existing binares, что запретит пересборку пакета.

Ссылки