Как мне создать PPA?


123

Как мне создать свой собственный PPA, чтобы поделиться с сообществом Ubuntu? Я пытаюсь создать свой собственный набор пакетов, и мне бы очень хотелось поделиться им с сообществом.


связанные или такие же: askubuntu.com/questions/28562/…
fossfreedom

Может быть , это помогает packaging.ubuntu.com/html/getting-set-up.html
rubo77

Ответы:


97

Используя Personal Package Archive ( PPA ), вы можете распространять программное обеспечение и обновления непосредственно среди пользователей Ubuntu. Создайте исходный пакет, загрузите его, и Launchpad создаст двоичные файлы, а затем разместит их в своем собственном хранилище apt.

Вот подробное объяснение .


5
Я смог активировать свой PPA до того, как подписал кодекс поведения.
Sparhawk

2
Это лучший ответ. Вам только что сказали, как создать PPA. Приведенный ниже ответ (по Totti) не является PPA, но является публичным хранилищем. Они разные, несмотря на (потенциально) выполнение одного и того же. Он даже говорит в первой строке своего ответа: «На этот вопрос хорошо написан, принят ответ. Поскольку ОП хочет простой способ опубликовать свои пакеты, я легко взломаю». Потому что вы предпочитаете легкий взлом, не делает его лучшим ответом.
lbaile200

Хорошо, но ни одна из ссылок в этом ответе на самом деле не описывает, как это сделать с нуля. все ссылки здесь сделаны для разработчиков, которые уже в материале гораздо больше
rubo77

1
@ rubo77 - «как создавать» слишком широка, чтобы отвечать. Все зависит от того, что вы пытаетесь упаковать. Действительно, каждый из шагов в ответе выше может быть отдельным Q с хорошим подробным ответом на каждый.
fossfreedom

1
Новый ответ Тотти уже
хорош

86

Как создать файл .deb

Это руководство по созданию базового файла .deb из данного примера сценария. В этом уроке мы сначала создадим пример программы на bash, которая просто показывает «HELLO FROM PROGRAM». Затем мы создаем управляющий файл для программы, чтобы сделать установщик Debian. Наконец они упакованы в .debфайл.

шаги:

  1. создать пример программы в bash

    mkdir "$HOME/create_deb/pgmdir"
    gedit "$HOME/create_deb/pgmdir/zenity_hello.sh"
    

    вставьте в него следующий код

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. Сделайте программу исполняемой

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. Создать управляющий файл для пакета debian

    Создайте файл с именем controlвнутри папкиDEBIAN

    mkdir "$HOME"/create_deb/DEBIAN
    gedit "$HOME"/create_deb/DEBIAN/control
    

    и вставьте следующие детали

    Package: hellodeb
    Version: 0.1
    Architecture: all
    Maintainer: totti
    Installed-Size: 6
    Depends: zenity, bash
    Section: testing
    Priority: optional
    Homepage: http://askubuntu.com
    Description: This is my first debian package.
     Guided by Totti Torvalds.
     In Description new line start with a space.
    

    Вы можете редактировать содержимое, если хотите. Подробнее о формате этого файла читайте здесь и здесь .

  4. Создать postinstскрипт, который выполняется сразу после установки пакета

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    затем вставьте

    #!/bin/sh
    set -e
    echo 'Installing program : zenity_hello.sh ......' | zenity --text-info
    

    и сделать его исполняемым

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. Создать prermскрипт, который выполняется перед удалением пакета

    #!/bin/sh
    set -e
    echo 'Removing program : zenity_hello.sh ......' | zenity --text-info
    

    и сделать его исполняемым

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. Создайте структуру пакета и скопируйте программы, данные и т. Д.
    Создайте структуру установленных программ и их данных. В этом примере мы помещаем файл в /bin.

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. Создайте файл .deb .

    dpkg-deb --build "$HOME"/create_deb .
    

    .Будет автоматически имя .debфайла с версией, арка и т.д. , или пользовательским именем

    dpkg-deb --build "$HOME"/create_deb "$HOME"/create_deb/hellodeb.deb
    

    Или если вы создаете файл .deb с

    debuild -k'your GPG key here' -S
    

    затем вы можете загрузить его на Ubuntu Launchpad с помощью

    dput ppa:<lp-username>/<ppa-name> packet-source.changes
    

    как описано здесь (источник: создать пакет .deb из скриптов или двоичных файлов )

  8. Установите только что созданный .debпакет. Вы можете открыть его с помощью, software-centerно он может не позволить вам установить. Поэтому я рекомендую использовать gdebiменеджер пакетов.

    sudo apt-get install gdebi
    
    gdebi "$HOME"/create_deb/hellodeb.deb
    

    Теперь вы можете установить его. Во время установки вы должны увидеть диалог GTK

    Установка программы: zenity_hello.sh ......

  9. После установки откройте терминал и введите zenity_hello. Если программа установлена ​​правильно и все в порядке, вы должны увидеть диалог gtk

    ПРИВЕТ ОТ ПРОГРАММЫ

  10. Удаление пакета

    sudo apt-get remove zenity_hello
    

Опубликуйте свой репозиторий за 2 минуты

Поскольку ОП хочет простой способ опубликовать свои пакеты, я даю легкий взлом.

требование: учетная запись dropbox (или любая другая служба, например, github ) с общей папкой.

  1. Создайте папку внутри вашей Public-Dropbox-Folder, куда вы положите свои файлы * .deb:

    mkdir ~/Dropbox/Public/deb-packages  
    

    или создайте эту папку где-нибудь еще и поместите символическую ссылку в вашу общую папку:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. Перейдите в эту папку и создайте скрипт, который при запуске создает Packages.gz, содержащий всю необходимую информацию о ваших deb-пакетах. Создайте:

    gedit import.sh  
    

    поместите это в это:

    #!/bin/bash
    dpkg-scanpackages . /dev/null |gzip > Packages.gz
    

    сделать его исполняемым:

    chmod  x import.sh
    
  3. Скопируйте некоторые файлы * .deb в папку. Может быть вашим или некоторыми, которые не доступны через другие репозитории. Затем перейдите в папку и выполните скрипт, который мы там поместили:

    cd ~/deb-packages/ 
    ./import.sh
    

    Это должно создать так называемый файл Packages.gz , который ищет, какие пакеты расположены в этом хранилище.


это оно

Теперь подождите, пока Dropbox синхронизирует папку и заберет публичный URL изPackages.gz . Это должно выглядеть примерно так:

http://dl.getdropbox.../Packages.gz

Избавьтесь от конца этой ссылки, добавьте к ней еще несколько слов, и теперь вы можете использовать и заполнить следующую строку для sources.list:

deb http://dl.getdropbox.../deb-packages ./

Вот и все, у вас работает собственный deb-репозиторий. Всегда синхронизируется локально, но доступно любому, в любое время и в любом месте.

ПРИМЕЧАНИЕ: dpkg-scanpackages доступно по dpkg-dev
ссылке


3
+1 Отлично! это работало: Я использовал Github и есть исходный каталог для папки releases/см github.com/rubo77/mouse-speed/blob/master/release/...
rubo77

Здесь описывается самодостаточный PPA, но как я могу
собрать

3
Если вы создаете файл .deb на шаге 7. с, debuild -us -uc -k'your GPG key here'вы можете загрузить его с помощью dput ppa:<lp-username>/<ppa-name> packet-source.changesLaunchpad, как описано здесь (источник: создать пакет .deb из скриптов или двоичных файлов )
rubo77

@ rubo77, спасибо, приветствую вас добавить эту информацию в конце моего ответа.
Тотти

1
Хорошо, я только что сделал, я также узнал, что вам нужны другие параметры для Launchpad, чтобы не создавать файл .deb прямо сейчас (просто -S): debuild -k'your GPG key here' -Sпотому что Launchpad создаст файл deb (если он не отклонен) - что был бы `-us -uc` для?
rubo77

2

Вам понадобится учетная запись Launchpad.net для создания PPA. Просто нажмите на своего пользователя на Launchpad (нажмите на свое имя в левом верхнем углу) и создайте PPA. Возможно, вам придется сначала подписать Кодекс поведения и зарегистрировать ключ GPG в вашей учетной записи.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.