Як створити PPA?


123

Як створити власний власний PPA для спільного використання з спільнотою Ubuntu? Я намагаюся створити свій власний набір пакунків, і я дуже хотів би поділитися ним із спільнотою.


споріднене чи те саме: askubuntu.com/questions/28562/…
fossfreedom

Може бути , це допомагає packaging.ubuntu.com/html/getting-set-up.html
rubo77

Відповіді:


97

За допомогою архіву особистого пакета ( PPA ) ви можете розповсюджувати програмне забезпечення та оновлення безпосередньо користувачам Ubuntu. Створіть свій вихідний пакет, завантажте його, і Launchpad створить бінарні файли, а потім розмістить їх у вашому власному сховищі.

Ось детальне пояснення .


5
FWIW Мені вдалося активувати свій PPA, перш ніж підписати кодекс поведінки.
Sparhawk

2
Це найкраща відповідь. Вам просто розповіли, як створити PPA. Відповідь нижче (totti) не є PPA, але це загальнодоступне сховище. Ці два різні, незважаючи на (потенційно) те, що вони роблять одне і те ж. Він навіть каже в першому рядку своєї відповіді: "На це питання є добре написана, прийнята відповідь. Оскільки ОП хоче простого способу опублікувати свої пакети, я даю легкий злом". Тому що ви віддаєте перевагу легкий хак - це не найкраща відповідь.
lbaile200

Гаразд, але жодне з посилань у цій відповіді насправді не описує, як це зробити з нуля. всі посилання тут створені для розробників, які вже входять до матеріалу набагато більше
rubo77

1
@ rubo77 - "як створити" суворо занадто широкий, щоб відповідати. Все залежить від того, що ви намагаєтесь упакувати. Дійсно, кожен із етапів у наведеній вище відповіді може бути індивідуальним питанням Q, з хорошою детальною відповіддю кожен.
fossfreedom

1
Нова відповідь Тотті вже чудова
rubo77

86

Як створити .deb файл

Це підручник зі створення базового файлу .deb із заданого зразкового сценарію. У цьому підручнику спочатку ми створюємо зразкову програму в bash, яка просто показує "Привіт від програми". Потім ми створюємо контрольний файл для програми, щоб зробити інсталятор 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
    

    тоді ви можете завантажити його на Labupad Ubuntu за допомогою

    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, куди ви помістите файли * .deb:

    mkdir ~/Dropbox/Public/deb-packages  
    

    або створіть цю папку десь в іншому місці та вставте символьне посилання у свою загальнодоступну папку:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. Зайдіть у цю папку і створіть сценарій, який при виконанні створює Packages.gz, що містить всю необхідну інформацію про ваші деб-пакети. створити:

    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 синхронізує папку та захопить Public-URL зPackages.gz . Це має виглядати приблизно так:

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

Позбавтеся від кінця цього посилання, додайте до нього ще кілька слів, і тепер ви можете використовувати та заповнити наступний рядок для source.list:

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

Ось це у вас працює власне сховище боргів. Завжди синхронізовано локально, але доступне для всіх, у будь-який час та в будь-якому місці.

ПРИМІТКА: dpkg-scanpackages доступний із dpkg-dev
посилання


3
+1 Чудово! це спрацювало: я використав Github, а там невідкритий каталог для папки releases/див. github.com/rubo77/mouse-speed/blob/master/release/…
rubo77

Це описує власний PPA, але як я можу створити пакет debian Ubuntu
rubo77

3
Якщо ви будуєте .deb-файл на кроці 7., debuild -us -uc -k'your GPG key here'тоді ви можете завантажити його dput ppa:<lp-username>/<ppa-name> packet-source.changesна Launchpad, як описано тут (джерело: створити .deb-пакет із сценаріїв або двійкових файлів )
rubo77

@ rubo77, Дякую, вітаю вас, щоб додати цю інформацію наприкінці моєї відповіді.
totti

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

2

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.