Создание собственного PPA Сравнение версий

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:создание_ppa [2013/01/31 14:23]
[Версионность]
wiki:создание_ppa [2013/03/23 14:07] (текущий)
[Шаг 2. Принятие Code of Conduct]
Строка 1: Строка 1:
 ====== Создание собственного PPA ====== ====== Создание собственного PPA ======
  
-====== Шаг 0. Регистрация на Launchpad ​======+===== Шаг 0. Регистрация на Launchpad =====
  
 Если вы уже зарегистрированы на Launchpad можете пропустить этот шаг. Если вы уже зарегистрированы на Launchpad можете пропустить этот шаг.
Строка 7: Строка 7:
 Перейдите по ссылке [[https://​login.launchpad.net/​+new_account]] и пройдите регистрацию. Это позволит вам создавать [[PPA]], участвовать в обсуждении багов, править переводы и многое другое. Перейдите по ссылке [[https://​login.launchpad.net/​+new_account]] и пройдите регистрацию. Это позволит вам создавать [[PPA]], участвовать в обсуждении багов, править переводы и многое другое.
  
-====== Шаг 1. Создание цифрового ключа ​======+===== Шаг 1. Создание цифрового ключа =====
 Цифровым ключем в дальнейшем будут подписываться все ваши пакеты. Именно при помощи него будет подтверждаться то, что пакет был выложен именно вами, а не кем-то другим. Более подробная информация о ключах содержится в этой [[репозиторий#​защита_репозиториев|статье]]. Цифровым ключем в дальнейшем будут подписываться все ваши пакеты. Именно при помощи него будет подтверждаться то, что пакет был выложен именно вами, а не кем-то другим. Более подробная информация о ключах содержится в этой [[репозиторий#​защита_репозиториев|статье]].
  
Строка 39: Строка 39:
 <note important>​На этом этапе генирируются публичный и личный ключи. Личный ключ должен находится только у вас, иначе это поставит под угрозу безопасность PPA.</​note>​ <note important>​На этом этапе генирируются публичный и личный ключи. Личный ключ должен находится только у вас, иначе это поставит под угрозу безопасность PPA.</​note>​
  
-====== Шаг 2. Принятие Code of Conduct ​====== +===== Шаг 2. Принятие Code of Conduct ===== 
-Code of Conduct это документ,​ описывающий правила поведения в сообществе Ubuntu. Без подписания этого документа у вас не будет возможности использовать некоторые функции Launchpad, в том числе и создание PPA.+Code of Conduct это документ,​ описывающий правила поведения в сообществе Ubuntu. Без подписания этого документа у вас не будет возможности использовать некоторые функции Launchpad, в том числе и создание PPA. Перевод этого документа можно прочитать в статье [[conduct|Кодекс поведения Ubuntu]].
   * Перейдите по ссылке [[https://​launchpad.net/​codeofconduct]]   * Перейдите по ссылке [[https://​launchpad.net/​codeofconduct]]
   * Нажмите //Register an OpenPGP key//   * Нажмите //Register an OpenPGP key//
Строка 53: Строка 53:
   .. Это создаст подписанный вашим ключом файл UbuntuCodeofConduct-1.1.txt.asc .   .. Это создаст подписанный вашим ключом файл UbuntuCodeofConduct-1.1.txt.asc .
   * Перейдите на страницу [[https://​launchpad.net/​codeofconduct]] и нажмите на ссылку //Sign it!//. в появившееся поле //Signed Code// ввода вставьте все содержимое файла UbuntuCodeofConduct-1.1.txt.asc и нажмите //​Continue//​.   * Перейдите на страницу [[https://​launchpad.net/​codeofconduct]] и нажмите на ссылку //Sign it!//. в появившееся поле //Signed Code// ввода вставьте все содержимое файла UbuntuCodeofConduct-1.1.txt.asc и нажмите //​Continue//​.
- +===== Шаг 3. Создание PPA =====
-====== Шаг 3. Создание PPA ======+
 Перейдите на страницу своего профиля на Launchpad и найдите ссылку //Create a new PPA//. Перейдите на страницу своего профиля на Launchpad и найдите ссылку //Create a new PPA//.
 {{ :​wiki:​ppa-create.png?​nolink |}} {{ :​wiki:​ppa-create.png?​nolink |}}
 Заполните поля //Display name// и //URL// . Поле //​Description//​ не обязательно для заполнения. При заполнении помните,​ что пользователи будут прописывать часть строки URL при добавлении PPA, поэтому его нужно делать максимально коротким,​ но при этом отражающем суть PPA. Описание //​Descriprion//,​ будет выводится пользователям в терминал,​ при добавлении PPA, поэтому тоже не усердствуйте с объемом. Заполните поля //Display name// и //URL// . Поле //​Description//​ не обязательно для заполнения. При заполнении помните,​ что пользователи будут прописывать часть строки URL при добавлении PPA, поэтому его нужно делать максимально коротким,​ но при этом отражающем суть PPA. Описание //​Descriprion//,​ будет выводится пользователям в терминал,​ при добавлении PPA, поэтому тоже не усердствуйте с объемом.
  
-====== Шаг 4. Сборка пакетов для загрузки в PPA ====== +===== Шаг 4. Сборка пакетов для загрузки в PPA ===== 
-Для загрузки в PPA используется специально подготовленные архивы source.changes,​ не пытайтесь загрузить в репозиторий .deb, пакеты. ​Для формирования подходящего пакета ​из исходников вашей ​программы необходимо сделать следующее:​ +Для загрузки в PPA используется специально подготовленные архивы source.changes,​ не пытайтесь загрузить в репозиторий .deb, пакеты. ​Инструкцию по "дебианизации" исходных кодов можно посмотреть в статье [[создание_deb_пакетов|Сборка ПО и создание .deb-пакетов из исходников ​в Debian-системах]].
-===== "Дебианизация" исходников ​===== +
-Цель данной процедуры- ​создать в папке с исходниками папку debian, в которой будут лежать управляющие файлы для ​сборки пакета deb. Перед этой процедурой исходники должны быть собраны (но не установлены!), для чего, в зависимости от содержимого исходников необходимо выполнить команды:​ +
-<​code>​./​bootstrap +
-./​configure ​--prefix=/​usr +
-make</​code>​ +
-"​Дебианизируем"​ исходники при помощи команды ''​dh_make'',​ для чего находясь ​в корне с исходниками необходимо выполнить +
-<​code>​dh_make ​--createorig</​code>​ +
-При запросе скрипта нужно указать тип пакета "​single binary"​ [s], вывод команды будет подобный:​ +
-<​code>​dolce@casa:​~/​build/​bakefile-0.2.9$ dh_make --createorig+
  
-Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch? 
- ​[s/​i/​m/​l/​k/​n] s 
- 
-Maintainer name  : dolce 
-Email-Address ​   : dolce@speran.info ​ 
-Date             : Thu, 31 Jan 2013 11:41:29 +0400 
-Package Name     : bakefile 
-Version ​         : 0.2.9 
-License ​         : blank 
-Type of Package ​ : Single 
-Hit <​enter>​ to confirm: ​ 
-Done. Please edit the files in the debian/ subdirectory now. bakefile 
-uses a configure script, so you probably don't have to edit the Makefiles.</​code>​ 
-после этого в папке с исходниками появится папка debian, в которой будет много файлов .ex и .EX, их можно удалить 
-<​code>​rm -f *.ex *.EX</​code>​ 
-===== Правка конфигурационных файлов ===== 
-Для корректной загрузки пакета на Launchpad необходимо правильно заполнить описательные файлы. Это делается для того, чтобы: 
-  - Пакет привязался к релизу Ubuntu; 
-  - Правильно отслеживалось обновление пакетов в PPA при неизменении версии пакета;​ 
-  - Правильно отслеживалось обновление пакетов в PPA при изменении версии пакета. 
 ==== Версионность ==== ==== Версионность ====
-Требования описанные ниже являются обязательными для ​загрузки ​на Launchpad, ​в противном ​случае вы будете получать ошибки на почту, а пакеты ​не будут приниматься. (RejectedДля ​соблюдения требований версионности ​Launchpad необходимо изменить данные о версии ​в файле debian/​changelogсодержимое ​файла должно быть следующее: <code bash>​mmex (0.9.9.0~ppa5) precise; urgency=low+Если вы пакуете пакет, который уже есть ​в репозитории 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 (при условии, что он будет работать без перекомпиляции),​ вы можете воспользоваться функцией [[#​Копирование пакета ​для других релизов Ubuntu|копирования пакетов]].
  
-  * Initial Release.+Если же пакет не работает в других выпусках без пересборки,​ то прибавляйте к версии суффикс ~имя_выпуска (например myapp_1.0-1ubuntu3ppa1~lucid) и загружайте каждую версию отдельно.
  
- -- dolce <​vomikan@mail.ru> ​ Wed, 30 Jan 2013 17:24:49 +0400</​code>,​ здесь в скобках к версии пакета нужно также приписать к её имени ~ppaX, где X номер загрузки пакета __одной версии__,​ это будет необходимо в случае,​ если перед этим вы залили неправильный архив и вам нужно что то поменять в нём. При загрузке такого архива в PPA будет отображаться только он, а различия от предыдущей версии будет доступны к просмотру в описании пакета.,​ а после скобок- указать кодовое название релиза Ubuntu, для которого этот пакет будет загружаться. В описании указываем внесенные изменения. 
 ==== Зависимости ==== ==== Зависимости ====
-Ещё ​один ​важный описательный файл **debian/​control**,​ в нём нужно указать:​ +Launchpad удовлетворяет сборочные зависимости (Build-Depends) ​используя: 
-  - К какой "​секции"​ пакетов относится этот пакет+  ​последние версии пакетов из PPA в который производится загрузка 
-  - Зависимости для ​сборки (пакет же будет собирать launchpad);​ +  * все секции основного репозитория ​Ubuntu ​--  то есть ​mainrestricted, universe ​и multiverse 
-  - Зависимости для установки (какие пакеты будут устанавливаться у пользователей вместе с нашим);​ +  ​* ​опциональнодругие PPA.
-  ​- Описание пакета (будет отображаться в synaptic). +
-=== Секция (Section) === +
-Идем [[http://​packages.ubuntu.com/​|сюда]], ​выбираем релиз, для которого формируем ​пакетвыбираем подходящую секцию,​ в заголовке будет указан название секции на английском языке, ​которое необходимо ввести в поле Section файла debian/​control. Например так: +
-<​code>​Section:​ misc</​code>​ +
-=== Зависимости ​для сборки (Build-Depends:​) === +
-Здесь необходимо указать пакеты,​ требуемые для сборки нашего пакета. Например так: +
-<​code>​Build-Depends:​ debhelper (>= 8.0.0), autotools-dev,​ libwxgtk2.8-dev (>= 2.8.0), libboost-dev (>= 1.48.0), python-dev (>= 2.7.3)</​code>​ +
-=== Зависимости для ​устаноуи (Depends:) === +
-Здесь необходимо указать пакеты, которые требуются для работы нашего пакета. Например так: +
-<​code>​Depends:​ ${shlibs:​Depends},​ ${misc:​Depends},​ libc6 (>= 2.3.5-1), libwxgtk2.8-0 (>= 2.8.0)</​code>​ +
-=== Описание (Description:​) === +
-Вместо <insert up to 60 chars description>​ нужно ввести ​короткое описание (до 60 символов,​ без угловых кавычек),​ а вместо <insert long description,​ indented with spaces> ​ нужно вписать длинное описание (без угловых кавычек). +
-===== Сборка исходников в архив ===== +
-Теперь можно собрать архив с исходниками,​ для чего находясь в папке с исходниками,​ выполняем:​ +
-<​code>​debuild ​--sd -k<​key_ID></​code>​ +
-Где <​key_ID>​- ID вашего ключа, полученного ранее. Писать нужно не отделяя пробелом от "​-k"​.\\ +
-Для тогочто бы посмотреть ID необходимо выполнить следующую команду:​ +
-<​code>​gpg --list-keys</​code>​ Номер указывается в строке pub, после слэша во втором столбце.\\ +
-При сборке пакета ​необходимо будет дважды ввести пароль, указанный при создании цифровой подписи.+
  
-В результате данного процесса рядом с папкой с исходниками,​ в числе прочих,​ появится архив **my_app-0.0.0.1~ppa1_source.changes**,​ который необходимо загружать на PPA.  +===== Шаг 5. Загрузка пакетов в PPA =====
-====== Шаг 5. Загрузка пакетов в PPA ======+
 Загрузка пакетов осуществляется утилитой ''​dput''​. Загрузка пакетов осуществляется утилитой ''​dput''​.
 <code bash>​sudo apt-get install dput</​code>​ <code bash>​sudo apt-get install dput</​code>​
-===== Настройка dput =====+ 
 +==== Настройка dput ====
 Для удобства стоит настроить dput, для этого необходимо отредактировать файл ~/.dput.cf и привести его к следующему виду: Для удобства стоит настроить dput, для этого необходимо отредактировать файл ~/.dput.cf и привести его к следующему виду:
-<​code>​[ppa-stable]+<​code ​ini>​[ppa-stable]
 fqdn = ppa.launchpad.net fqdn = ppa.launchpad.net
 method = ftp method = ftp
-incoming = ~<​ваш_id>/<​имя_ppa-stable>/​ubuntu/​+incoming = ~<​ваш_id>/<​имя_ppa>/​ubuntu/​
 login = anonymous login = anonymous
-allow_unsigned_uploads = 0+allow_unsigned_uploads = 0</​code>​ 
 +<​ваш_id>​- ID вашей учетной записи или команды,​ отображается в строке URL браузера 
 +<​имя_ppa>​- название выбранного PPA. 
 +Вы можете настроить dput для работы с любым количеством PPA. Для этого достаточно добавить в файл ~/.dput.cf еще одну секцию настроек,​ аналогичную приведенным выше.
  
-[ppa-unstable] +==== Загрузка пакета ====
-fqdn = ppa.launchpad.net +
-method = ftp +
-incoming = ~<​ваш_id>/<​имя_ppa-unstable>/​ubuntu/​ +
-login = anonymous +
-allow_unsigned_uploads = 0 +
-</​code>​ +
-<​ваш_id>​- ID вашей учетной записи или команды,​ отображается в строке URL браузера\\ +
-<​имя_ppa-unstable>​- название выбранного PPA. +
-Так как PPA у вас может быть несколько,​ то и конфигураций может быть сколько угодно. +
-===== Загрузка пакета ​=====+
 Пакет загружается командой Пакет загружается командой
 <code bash>​dput ppa-stable <​source.changes></​code>​ <code bash>​dput ppa-stable <​source.changes></​code>​
Строка 151: Строка 100:
  
 После успешной загрузки на почтовый ящик вашей учетной записи,​ а так же почтовый ящик, указанный в файле debian/​changelog придет уведомление об успешной или неуспешной загрузке архива. Что значат ошибки в письмах можно посмотреть [[https://​help.launchpad.net/​Packaging/​UploadErrors|здесь]]. В случае успешной загрузки,​ через некоторое время начнется сборка пакета для доступных архитектур,​ лог файл сборки будет доступен к просмотру онлайн,​ в просмотре подробностей к пакету на странице PPA, а так же, в случае ошибки,​ будет прислана ссылка на просмотр лога на почту. После успешной загрузки на почтовый ящик вашей учетной записи,​ а так же почтовый ящик, указанный в файле debian/​changelog придет уведомление об успешной или неуспешной загрузке архива. Что значат ошибки в письмах можно посмотреть [[https://​help.launchpad.net/​Packaging/​UploadErrors|здесь]]. В случае успешной загрузки,​ через некоторое время начнется сборка пакета для доступных архитектур,​ лог файл сборки будет доступен к просмотру онлайн,​ в просмотре подробностей к пакету на странице PPA, а так же, в случае ошибки,​ будет прислана ссылка на просмотр лога на почту.
 +
 +===== Копирование пакета для других релизов Ubuntu =====
 +Для того, чтобы пользователи различных версий дистрибутивов могли скачивать пакет с вашего репозитория,​ необходимо сделать следующее:​
 +  - Нажмите //View package details//
 +  - Далее нажмите //Copy packages// и отметить пакеты,​ которые хотите "​размножить"​
 +  - Укажите //​Destination series// выбрав целевую версию дистрибутива. При этом, нужно поставить точку в пункте //Сopy existing binares//, что запретит пересборку пакета.
 +
 ===== Ссылки ===== ===== Ссылки =====
   * [[http://​ky6uk.org/​launchpad-its-really-simple|Launchpad — это просто]]   * [[http://​ky6uk.org/​launchpad-its-really-simple|Launchpad — это просто]]
 +  * [[https://​help.launchpad.net/​Packaging/​PPA|Packaging/​PPA]] (англ.)
  
 {{tag> HOWTO launchpad разработка}} {{tag> HOWTO launchpad разработка}}