Главная > Linux > Launchpad – это просто

Launchpad – это просто

У меня есть привычка собирать некоторые часто используемые приложения из исходников. Причина этого довольно очевидна – желание иметь больший функционал с юзабельностью и нежелание иметь древние баги (новые всегда можно откатить или поправить самому). Но длительное использование Ubuntu как основного дистрибутива Linux оставило свой след – я делаю из этих исходников бинарные пакеты, которые в дальнейшем можно установить или удалить с помощью обычного пакетного менеджера dpkg.

В последнее время мне стало нехватать моего личного и процессорного времени на сборку, поэтому я заинтересовался сервисом launchpad.net. Этот сервис помогает автоматизировать сборку пакетов из исходников для различных архитектур и предоставляет персональный репозиторий (PPA) для готовых пакетов, который можно добавить непосредственно в sources.list.

Для чего это нужно?

Собственно причина написания статьи:

  • Автоматическая сборка пакетов на сервере в «чистом» окружении.
  • Поддержка различных архитектур (amd64, i386, lpia).
  • Собственный репозиторий для подключения в Ubuntu.

А так же:

  • Хостинг исходных текстов под управлением bazaar.
  • Багтрекер.
  • Встроенная система локализации.
  • Группы разработчиков.
  • Может быть что-то еще… :)

Начинаем с малого. Регистрация.

Получить доступ к launchpad.net (далее просто LP) не сложно, необходимо лишь пройти стандартную процедуру по этой ссылке.

  • Укажем в нижнем поле наш E-Mail на который придет подтверждение регистрации и нажмем кнопку Register.

регистрация на launchpad.net

регистрация на launchpad.net

  • На указанный почтовый адрес придет письмо с инструкциями. В нем будет ссылка на продолжение регистрации.
письмо со ссылкой

письмо со ссылкой

LP предупреждает, что некоторые почтовые сервисы могут блокировать письма и советует использовать Gmail или Yahoo Mail в качестве регистрационной почты, но в большинстве случаев все приходит на любой адрес.

  • После перехода в письме по ссылке, откроется страничка LP на которой нужно будет указать отображаемое имя (обычно тут пишут имя и фамилию) и пароль для дальнейшего доступа к LP. После заполнения формы жмем Continue. На этом регистрация завершена.
завершение регистрации

завершение регистрации

Создание нового PPA.

  • Для создания персонального архива пакетов (PPA), на личной странице пользователя необходимо нажать на ссылку Create a new PPA.
создаем новый PPA

создаем новый PPA

  • В открывшемся окне заполняем название и описание будущего PPA, соглашаемся с PPA Terms of Use и жмем кнопку Activate. Название и описание в дальнейшем можно будет поменять. После этого откроется страница с только что созданным архивом пакетов.

Важно! После создания PPA будет заблокирована возможность менять имя персональной страницы (у меня это /~ky6uk/). По этому рекомендую изменить это имя заранее на странице Change details.

форма создания нового PPA

форма создания нового PPA

Важный момент, цифровой ключ.

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

  • Генерируем ключ командой
    $ gpg --gen-key
  • Тип ключа оставляем по умолчанию: DSA и ElGamal.
  • Размер тоже оставим как есть: 2048 бит.
  • Срок действия так же оставляем по умолчанию: без ограничения срока действительности.
  • Отвечаем утвердительно на вопрос: Все верно? (y/N).
  • Следующим будет вопрос Ваше настоящее имя. Здесь указываем ваши Имя (Ник) Фамилия
  • Далее указываем ваш E-Mail на вопрос: Email-адрес.
  • Комментарий можно заполнить по своему желанию или оставить пустым.
  • Если все верно, принимаем изменения и вводим пароль с подтверждением для доступа к приватному ключу.
  • После ввода пароля начнется процесс генерации ключа. На этом этапе необходимо выполнять различные действия, такие как двигать мышью и печатать на клавиатуре.

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

сгенерированный OpenPGP ключ

сгенерированный OpenPGP ключ

В моем случае ID ключа 3231C010.

  • В заключение отправим публичный ключ на сервер ключей:
$ gpg --send-keys --keyserver keyserver.ubuntu.com 3231C010

Еще немного бюрократии.

Перед началом работы с PPA так же необходимо подписать нормативный кодекс Ubuntu (Ubuntu Codes of Conduct) своим личным ключом.

  • Переходим по ссылке и нажимаем на первый пункт: Register an OpenPGP key
UCoC, регистрация OpenPGP ключа

UCoC, регистрация OpenPGP ключа

  • Импортируем OpenPGP ключ, указав в поле его отпечаток и нажав на кнопку Import Key.

Импорт OpenPGP ключа

Импорт OpenPGP ключа

Узнать отпечаток можно командой

$ gpg --fingerprint 3231C010

Где 3231C010 – ID вашего ключа.

  • На ваш E-Mail придет письмо, с зашифрованным текстом.
    -----BEGIN PGP MESSAGE-----
    Version: GnuPG v1.4.6 (GNU/Linux)
    
    hQIOA7MGLea56Z7WEAf/cc/4jpc3VRK8UPG9qhnM6CCkhJhe2lvMmIUKv3FJ+R7w
    trzB9puaO0XdRFeJ5SxmMnwJ8UgElUBBnoIRxWX/fOKPmjgoZ9XFe8j9ziujxZTG
    Xcmz7pcqYXBYIj5WuwTTEIVgPNgyI1aCTihepQ6R1x/Uag7Bc2pxVriDabfaIOCq
    roTHbh8rqrlxY+aWQcjrHGTMy8G/X8McKjNHu7GN4NoqBsKmTBwJM/rjmodyivAN
    PsDP51vQ1ZxGb5wGOlozrI4VVORQePphHRtBM+EnGgket0GemUsgArpk836JMN/M
    xhHfPzRBdD5mj11q+FkOLJ7wmEpSuZyEWCjyyp1M3gf/fYP+88n/uRvCqLytnprN
    5tqBLREJSQoJnrMsflS791JaS1SF6ExSGXTZC/dJJrGOVu8kGvwdutQgQmnNHhjO
    /ZVWEVJVjm/zOsumqM/ukXPS3f161ECRcu4aa+OTDjPhxA/7Wb3UKTiTHd7NyN5K
    vegjTzIVpSiL8KyLNtEM/fYKFtLcF3B7Jsgkjwek5jG7FDp3jfG70kFV3vCSWqzK
    wvF8d/bDsBs+sxQlr7qNn813d8cBR5bVoj0avGxhhQ6kaRgL6LGg6PyoVRm716gx
    apiFIHqEM8J6rjDgNHP+eZi96z2K8tCeWudIJix40D0yoQg2l4TmRv5va2oNTH1N
    mtLArwFtV2LipJbTJjU8DaJR65zAoXBndW66FSfM87IiJ0kAeE2HeMrVk4rFtMnb
    yD2+9+w5+LUAGU9hp1fIUTrcF4c0lyJhSqe5GUJ9HWuZ2EuXOBFH15RaPaSape4P
    QcUfqsAnbG28cBVjR+rD1mxaMaKWXN88lpvHvqDMQsxfzhkyKigRtr9gceLKB2SY
    7MHxyXAKs3+4K6378iXCHsEv2AerUKoGbYhK+HEYmQ5ol+AbyIVHCPsi5MDvHLbW
    VxUUxCy3Y3rIAn1nljjcAGNxlmEaQNaCXvmF5UwsBwu6PZDO6Sg/2XMpenML7hhc
    15hSwUCa2IEpyTpiwHjGFqjZ5giek+cf/P4cLMw0FEu5uVX+t7pxG4DiGwUjSpyY
    2m046YyoweqzbaJOH1TrsApAW7K/Ad8D1NJpd1cHRLU3JYq2fiwSgsDIr4Gf+F3R
    h8v/SnvAJR7xEOkq/6a+uySqS74JjsZfIPwIsPhDj6WGGY4=
    =CLRh
    -----END PGP MESSAGE-----
  • Расшифровать его можно разными способами. Самый простой – сохранить этот текст в файл, например в /tmp/mail.txt и выполнить команду:
    $ gpg --decrypt /tmp/mail.txt

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

подтверждение OpenPGP ключа

подтверждение OpenPGP ключа

  • Теперь необходимо скачать файл нормативного кодекса Ubuntu на этой странице.
Нормативный кодекс Ubuntu

нормативный кодекс Ubuntu

  • Сохраняем файл UbuntuCodeofConduct-1.0.1.txt и выполняем команду
    gpg --clearsign UbuntuCodeofConduct-1.0.1.txt

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

  • Переходим по ссылке и нажимаем на Sign It!
подписываем нормативный кодекс Ubuntu

подписываем нормативный кодекс Ubuntu

  • Полностью копируем текст из UbuntuCodeofConduct-1.0.1.txt.asc в поле Signed Code и нажимаем Continue. На этом с бюрократией покончено. ;-)
завершение подписывания UCoC

завершение подписывания UCoC

Использование PPA.

Как уже говорилось, с помощью PPA можно автоматизировать сборку и публикацию бинарных пакетов для Ubuntu. Для этого нужно только загрузить архив специальным образом сформированных исходников.

  • Для начала уставим в систему пакет dput, с помощью которого и будет происходить загрузка исходников на сервер LP.
    $ sudo aptitude install dput
  • После этого нужно создать файл ~/.dput.cf со следующим содержанием:
    [ppa]
    fqdn = ppa.launchpad.net
    method = ftp
    incoming = ~<ваш_id>/<имя_ppa>/ubuntu/
    login = anonymous
    allow_unsigned_uploads = 0

    <ваш_id> – это имя вашей страницы на LP. (знак тильды ~ перед именем обязателен)
    <имя_ppa>
    по-умолчанию ppa. Его можно изменить в настройках.

    У меня этот файл выглядит следующим образом:

    [ppa]
    fqdn = ppa.launchpad.net
    method = ftp
    incoming = ~ky6uk/ppa/ubuntu/
    login = anonymous
    allow_unsigned_uploads = 0

Теперь нам понадобятся специальным образом подготовленные исходники. Покажу на примере уже существующего пакета arora.

  • Получим исходники командой
    $ apt-get source arora
  • Подождем пока они скачаются и распакуются, затем переименуем директорию с исходниками, добавив к имени ~ppa1. У меня директория стала называться arora-0.8.0~ppa1.

Окончание ~ppaX – одно из требований LP. Все пакеты должны оканчиваться на ~ppaX, где X – цифра, означающая номер билда. Например, если после сборки пакета были замечены недочеты, то после исправления последнюю цифру необходимо увеличить на еденицу. Подробнее про это по ссылке.

  • Теперь вносим в код все необходимые изменения и не забываем добавить в файл debian/changelog запись о проделанной работе. Например у меня последняя запись выглядит так:
    arora (0.8.0~ppa1) karmic; urgency=low
    
      * Fixed critical bug.
      * Add more functions.
    
     -- Roman Nuritdinov <ky6uk.kun@yandex.ru>  Thu, 13 Aug 2009 21:34:00 +0600
  • Теперь, находясь в директории с исходниками, даем команду на сборку этих исходников в архив командой
    $ debuild -S -sd
  • Осталось отправить полученные файлы на LP, где они будут собраны в бинарный пакет и размещены в вашем PPA. Отправить файлы на LP можно командой
    $ dput ppa arora_0.8.0~ppa1_source.changes

    где ppa – это название правила из ~/.dput.cf, а arora_0.8.0~ppa1_source.changes сгенерированный командой debuild файл изменений.

Через некоторое время после загрузки исходных кодов на LP на ваш почтовый ящик придет письмо с результатом. Пакет может быть отклонен из-за ошибок или принят на обработку. Если пакет принят, то он будет поставлен в очередь на сборку. Следить за сборкой можно на странице с вашим PPA.

Теперь все зависит только он правильности оформления пакета и качества исходного кода. Удачи!

Полезные ссылки.

VN:F [1.9.3_1094]
Rating: 9.3/10 (6 votes cast)
Launchpad - это просто, 9.3 out of 10 based on 6 ratings
  • Print
  • PDF
  • Google Bookmarks
  • Twitter
  • Digg
  • del.icio.us
  • Reddit
  • Facebook
  • Identi.ca
  • Slashdot
  • StumbleUpon
Categories: Linux Tags: , ,
  1. stokito
    11 Январь 2010 в 02:31 | #1
    Использует Firefox 3.5.7 Firefox 3.5.7 на Ubuntu 9.10 Ubuntu 9.10

    Вхух спасибо за вменяемое руководство но оно блин не полное. Мне пришлось проебстись день пока вкурил все маны.
    Если появится время накидаю как решал проблемы и на тебя сошлюсь.
    Только ещё просьба: добавь в ссылки русский перевод Debian Policy http://www.debian.org/doc/manuals/maint-guide/ch-first.ru.html

    VA:F [1.9.3_1094]
    Rating: 5.0/5 (1 vote cast)
    • 12 Январь 2010 в 01:40 | #2
      Использует Google Chrome 4.0.288.1 Google Chrome 4.0.288.1 на GNU/Linux GNU/Linux

      В чем была проблема? Данный мануал по использованию сервиса launchpad.net, а не по сборке пакетов. Правильное оформление пакета – другая большая история.

      VN:F [1.9.3_1094]
      Rating: 0.0/5 (0 votes cast)
  2. DarkneSS
    5 Февраль 2010 в 18:05 | #3
    Использует Opera 10.10 Opera 10.10 на Windows XP Windows XP

    Здравствуйте! Спасибо за руководство. Можно ли проводить загрузку ключа и пакетов через веб-интерфейс? У меня нет через прокси, боюсь, что не осилю настройку dput.

    VA:F [1.9.3_1094]
    Rating: 4.0/5 (1 vote cast)
    • 21 Февраль 2010 в 16:55 | #4
      Использует Google Chrome 5.0.307.5 Google Chrome 5.0.307.5 на GNU/Linux GNU/Linux

      Насколько мне известно, такого веб-интерфейса не существует. Как вариант стоит попробовать установить переменную окружения HTTP_PROXY/FTP_PROXY перед использованием dput или воспользоваться любым ftp-клиентом с поддержкой настройки прокси.

      VN:F [1.9.3_1094]
      Rating: 0.0/5 (0 votes cast)
  1. Пока что нет уведомлений.