четверг, 11 мая 2017 г.

Как создать собственный репозиторий на Launchpad

Launchpad logo

Launchpad - мощный веб-сервис предоставляющий важные инструменты для пользователей и разработчиков Ubuntu. Сервис позволяет:
  • совместно работать над свободным ПО;
  • создавать собственные персональные репозитории (Personal Package Arhive - PPA);
  • участвовать в обсуждении багов; 
  • править переводы;
  • и многое другое.
Имеется очень хорошая статья на русскоязычной ubuntu wiki: Создание собственного PPA. Опираясь на эту статью, расскажу: Как создать собственный репозиторий на Launchpad.

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

Естественно в начале нужно зарегистрировать на Launchpad, для этого переходим по ссылке https://login.launchpad.net/+new_account и производим регистрацию. Во время регистрации на почту придет письмо, в котором будет ссылка для подтверждения данной почты.

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

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

Генерации ключа выполняется следующей командой в терминале:

gpg --gen-key

Программа gpg первым делом спросит какой тип ключа нужно сгенерировать. У меня было предложено 4 варианта ключа. Введя 1 и нажав enter, я выбрал первый вариант, предложенный по умолчанию.

Дальше требуется выбрать длину ключа от 1024 до 4096 бит. Думаю для хорошей безопасности достаточно длины 2048, но я ввел максимальный размер - 4096.

Затем выбирается срок действия ключа. В Wiki предложен вариант: без ограничения срока действительности. Подумав и решил указать 2 года, т.к. всегда можно при необходимости сгенерировать новый ключ.

Следующими шагами вводятся: имя (логин), email-адрес и комментарий.
Логин и email-адрес нужно обязательно ввести, а вот комментарий по желанию, советую его не вводиться, меньше проблема потом будет.

В конце напоследок соглашается с введенными данными и вводим английскую букву - "o". Как выглядел весь процесс показан ниже. Указанная почта принадлежит не мне, и используется лишь для примера.

maksim@librebay:~$ gpg --gen-key
gpg (GnuPG) 1.4.18; Copyright (C) 2014 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Выберите тип ключа:
   (1) RSA и RSA (по умолчанию)
   (2) DSA и Elgamal
   (3) DSA (только для подписи)
   (4) RSA (только для подписи)
Ваш выбор (?-подробнее)? 1
ключи RSA могут иметь длину от 1024 до 4096 бит.
Какой размер ключа Вам необходим? (2048) 4096
Запрашиваемый размер ключа 4096 бит
Выберите срок действия ключа.
         0 = без ограничения срока действительности
      <n>  = срок действительности n дней
      <n>w = срок действительности n недель
      <n>m = срок действительности n месяцев
      <n>y = срок действительности n лет
Ключ действителен до? (0) 2y
Ключ действителен до: Вс. 11 февр. 2018 22:01:10 IRKT
Все верно? (y/N) y

Для идентификации Вашего ключа необходим User ID
Программа создаст его из Вашего имени, комментария и адреса e-mail в виде:
    "Baba Yaga (pensioner) <yaga@deepforest.ru>"

Ваше настоящее имя: maksim
Email-адрес: maksim@mail.ru
Комментарий: 
Вы выбрали следующий User ID:
    "maksim <maksim@mail.ru>"

Сменить (N)Имя, (C)Комментарий, (E)email-адрес или (O)Принять/(Q)Выход? o

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

В процессе у меня появлялись сообщения вида:

Недостаточно случайных чисел.  Выполняйте какие-либо действия для того,
чтобы ОС могла получить больше случайных данных! (Необходимо ещё 190 байт)
...........+++++
Необходимо сгенерировать много случайных чисел. Желательно, что бы Вы
выполняли некоторые другие действия (печать на клавиатуре, движения мыши,
обращения к дискам) в процессе генерации; это даст генератору
случайных чисел возможность получить лучшую энтропию.

В итоге программа генерации ключа завершила свою работу, выдав мне следующее:
gpg: ключ D474D05E помечен как абсолютно доверяемый.
открытый и закрытый ключи созданы и подписаны.

gpg: проверка таблицы доверий
gpg: 3 ограниченных необходимо, 1 выполненных необходимо, PGP модель доверия
gpg: глубина: 0  корректных:   2  подписанных:   0  доверия: 0-, 0q, 0n, 0m, 0f, 2u
gpg: срок следующей проверки таблицы доверий 2018-02-07
pub   4096R/D474D05E 2016-02-12 [годен до: 2018-02-11]
      Отпечаток ключа = 2329 20F4 7D75 8863 3D20  9C8F 64D9 4DB2 D474 D05E
uid                  maksim <maksim@mail.ru>
sub   4096R/7DF7E6D1 2016-02-12 [годен до: 2018-02-11]

Обратим внимание на первую строчку, в ней указан ID публичного ключа. В примере выше ID равен D474D05E. Данный ключ нужно отправить на сервер ключей

gpg --send-keys --keyserver keyserver.ubuntu.com D474D05E

Важно! Программа gpg генерирует публичный и личный ключи. Личный ключ еще называется "Отпечаток ключа". Личный ключ должен находится только у его создателя, иначе это поставит под угрозу безопасность PPA.

Сейчас, чтобы продолжить дальше, надо сделать небольшой перерыв, минут на 15. Например, как я, можно сходить и попить чаю. Это необходимо, чтобы сервер ключей keyserver.ubuntu.com обработал отправленный к нему ключ.

Принятие Code of Conduct

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

Для подписания Code of Conduct переходим по ссылке https://launchpad.net/codeofconduct, по которой увидим:

Подписывание документа code of conduct
 Нажимаем на "Register an OpenPGP key" и попадаем на страницу:

Здесь в поле Fingerprint вводим отпечаток ключа, который до этого сгенерировали и нажием Import Key.

После импорта ключа на почту приходит зашифрованное письмо. Некоторые почтовые клиенты (такие как Evolution) могут предлагать расшифровать письмо. В моем случаем, ничего такого не было, поэтому пришлось в ручную расшифровывать послание в письме. Для этого сохраняем содержимое письмо в текстовый файл mail.txt, можно воспользоваться программой gedit. И используем команду расшифровки:
gpg --decrypt ~/mail.txt

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

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

Данный документ теперь надо подписать своим ключом. Открываем терминал, если Code of Conduct находится в папке загрузок, переходим в нее: cd Загрузки или cd Download. И выполняем там команду:
gpg --clearsign UbuntuCodeofConduct-2.0.txt

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

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

Вот и всё. Теперь Code of Conduct нами принят и можно перейти к созданию самого PPA.

Создание PPA

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

На этом закончим эту статью. В следующей я рассмотрю как размещать пакеты в своём репозитории.