Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
wiki:создание_ppa [2013/01/31 20: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, для которого этот пакет будет загружаться. В описании указываем внесенные изменения. | ||
| - | Для автоматизации внесения подписи добавляем в .bashrc контактные данные: <code bash>echo 'export DEBFULLNAME="Yuri Ivanov"' >>~/.bashrc | ||
| - | echo 'export DEBEMAIL="myusername@yandex.ru"' >>~/.bashrc | ||
| - | source ~/.bashrc</code> | ||
| - | Теперь добавить изменения с помощью командной строки, например: <code bash>dch -i "Ready for game World Of Tanks (WOT). Patched with disable-dynamic-vertex-buffers2.patch ."</code> | ||
| ==== Зависимости ==== | ==== Зависимости ==== | ||
| - | Ещё один важный описательный файл **debian/control**, в нём нужно указать: | + | Launchpad удовлетворяет сборочные зависимости (Build-Depends) используя: |
| - | - К какой "секции" пакетов относится этот пакет; | + | * последние версии пакетов из PPA в который производится загрузка |
| - | - Зависимости для сборки (пакет же будет собирать launchpad); | + | * все секции основного репозитория Ubuntu -- то есть main, restricted, 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 -S -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> | ||
| Строка 155: | Строка 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", что запретит пересборку пакета, пересборка пакета с идентичными названием и версией в одном PPA невозможна, поэтому если вам, всё таки, нужно пересобрать бинарный файл, то придется загружать этот же пакет с увеличением ~ppaX в версии. | + | ===== Копирование пакета для других релизов 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 разработка}} | ||