Как мне создать PPA для работающей программы?

36

Предположим, у меня есть рабочее приложение, написанное на C, C ++ или Python. Я хочу создать PPA Launchpad, чтобы другие могли легко установить его из пакета. Пожалуйста, дайте пошаговые инструкции, чтобы сделать это от начала до конца. (Или предоставьте ссылку, которая делает то же самое;)

  • Имеет ли значение язык программирования? (Это может быть сценарий bash?)
  • Нужно ли что-нибудь добавить в мою сборку?
  • Где должна быть установлена ​​сборка?
  • Как мне определить зависимости?
  • Как я могу использовать зависимости?
  • Как мне создать .deb?
  • Что мне нужно сделать перед загрузкой на Launchpad?
david.libremone
источник
1
Я задаю этот вопрос, потому что время от времени рекомендую проектам FLOSS создавать PPA (чтобы я мог легко их установить :) - я хотел бы иметь возможность указать им исчерпывающий ресурс или сделать это сам.
david.libremone

Ответы:

33

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

К счастью, на http://packaging.ubuntu.com есть подробное руководство

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


Прежде всего вы должны понимать, что создание пакета (файла .deb) - это отдельный процесс от создания PPA. Чтобы создать PPA, нужно перейти в профиль вашей панели запуска и нажать ссылку «Создать новый PPA». Вот и все. Он создан, он работает, но он пуст. Чтобы загрузить пакет, вы должны сначала создать его. Но позвольте мне сначала ответить на некоторые ваши незначительные вопросы.

  • Язык программирования не имеет значения вообще. Это может быть приложение на C ++, скрипт Bash, Brainfuck Hello World, один файл README или набор классных фотографий. Пакеты могут содержать любой файл. Во время установки пакет извлекается в корневой каталог ("/") вашей файловой системы. Таким образом, они могут поместить некоторые файлы в папку binaries, добавить некоторые обои в набор GNOME по умолчанию или предоставить пользователю скрипт Bash.
  • Вы НЕ нужно добавить что - то к источнику. Это должен быть каталог верхнего уровня с именем "debian". Там будет несколько файлов с деталями пакета - они будут использоваться для определения типа пакета и т. Д.
  • Зависимости перечислены в одном из этих файлов (среди других деталей). Где их взять? Это просто другие пакеты, которые использует ваше приложение. Разработчик приложения будет знать, какие библиотеки и ресурсы требуются его программе, поэтому у него не должно возникнуть особых проблем с их перечислением.
    • Некоторые инструменты, используемые для сборки пакета (pbuilder), могут автоматически заполнять зависимости, возможно, путем определения того, что требуется вашему приложению во время компиляции.
  • Также настоятельно рекомендуется использовать AutoTools . Это еще одна вещь, которую вы, возможно, должны добавить, но, вероятно, почти все программное обеспечение уже использует их. AutoTools - это набор чрезвычайно полезных программ - automake, autoconf и autoscan и многие другие. Когда вы компилируете и устанавливаете программу с известной ./configure && make && make install затем автоинструменты используются для автоматического обращения с источником, для подготовки других ресурсов, включенных в источник, к установке и для извлечения результата компиляции в соответствующее место (чтобы ответить на ваш вопрос: сборка будет извлечена во МНОГИЕ отдельные места. двоичные файлы будут идти в / usr / local / bin, документы в / usr / local / share / docs и т. д. Кроме того, двоичные файлы из пакета будут отправляться даже в разные места, например, двоичные файлы в / usr / bin. с этим сложным расположением каталогов? Используйте AutoTools - это позаботится об этом автоматически, и поэтому они так полезны).

Сборка пакета .deb может показаться очень сложным процессом, но это не так сложно. Я настоятельно рекомендую вам официальное руководство по созданию пакетов в Ubuntu: http://packaging.ubuntu.com

Это ОГРОМНО, но вы увидите, что, вероятно, можете пропустить большую часть этого текста (в зависимости от того, какой пакет вы собираетесь собирать). По сути, процесс упаковки состоит из следующих частей (все они четко объяснены в Руководстве) :

  1. Инициируйте некоторые инструменты, используемые для сборки пакетов.
  2. Получить источник
  3. Создайте каталог ./debian и заполните его необходимыми данными.
  4. Сборка пакета с помощью debuild [Это должно создать набор файлов, включая * .dsc, * _source.build, * _source.changes, которые отвечают за данные о пакете и как с ним работать (у вас также будет источник .tar.gz)]
  5. Проверьте, все ли работает, запустив pbuilder локально (он возьмет все эти файлы, упомянутые выше, и попытается объединить их в пакет .deb, автоматически собрав исходный код с помощью AutoTools - вот почему они имеют решающее значение для упаковки [честно говоря - нет - вы можете обойтись без них или с некоторыми альтернативами, но это очень простой подход, а для других может потребоваться дополнительная настройка, так как вам нужно будет указать сборщику, как создать исходный код (используя файл ./debian/rules). ) - но это не для новичков] ) - если вы просто хотите получить пакет .deb, все готово.

Теперь вам нужно загрузить его в свой PPA, что объясняется на этой странице справки: https://help.launchpad.net/Packaging/PPA/Uploading

  1. Используйте dput для загрузки этих файлов на Launchpad
  2. Launchpad будет запускать pbuilder на своих компьютерах и генерировать пакеты в чистой среде
  3. Наконец, пакеты должны появиться в PPA.

Как видите, создание PPA не так просто . Но не пугайтесь , это тоже не так сложно. Более того, я рекомендую вам не поощрять разработчиков использовать PPA, поскольку, вероятно, они не будут вас слушать, поскольку им нужно будет выполнить какую-то дополнительную работу (и если бы они захотели, они бы это уже сделали), но вы можете хочу поддержать разработчиков Ubuntu и все сообщество и предоставить им подготовленные вами пакеты :)

Я желаю вам удачи в создании пакетов, надеюсь, вы найдете мой ответ полезным :)

Твой друг Рафал Цеслак

Рафал Цеслак
источник
Как вы можете создать PPA без Launchpad, размещенный на вашей собственной инфраструктуре? Это простой веб-сервер с соответствующей структурой каталогов?
Профессор Мориарти
действительно ли был необходим пример brainf * ck ?
Камден
5
  • Прежде чем вы сможете загрузить свой пакет, вам нужно настроить его на .debупаковку, см. Ubuntu PackagingGuide .

  • Как только вы сможете собрать пакет для своего программного обеспечения, обратитесь к документации PPA на Launchpad . Он поможет вам от создания PPA до загрузки вашего пакета.

Исайя
источник