Jak utworzyć umowę PPA?

Odpowiedzi:

97

Korzystając z osobistego pakietu pakietów ( PPA ), możesz rozpowszechniać oprogramowanie i aktualizacje bezpośrednio wśród użytkowników Ubuntu. Utwórz pakiet źródłowy, prześlij go, a Launchpad zbuduje pliki binarne, a następnie umieści je w swoim własnym repozytorium apt.

Oto szczegółowe wyjaśnienie .

hhlp
źródło
5
FWIW Byłem w stanie aktywować PPA przed podpisaniem kodeksu postępowania.
Sparhawk
2
To najlepsza odpowiedź. Właśnie powiedziano ci, jak utworzyć PPA. Poniższa odpowiedź (autor: totti) nie jest umową PPA, ale publicznym repozytorium. Oba są różne, pomimo (potencjalnie) osiągnięcia tego samego. Mówi nawet w pierwszym wierszu swojej odpowiedzi: „To pytanie ma dobrze napisaną, zaakceptowaną odpowiedź. Ponieważ OP chce prostego sposobu na opublikowanie swoich paczek, daję łatwy hack”. Ponieważ wolisz łatwy hack, nie jest to najlepsza odpowiedź.
lbaile200
OK, ale żaden z linków w tej odpowiedzi tak naprawdę nie opisuje, jak to zrobić od zera. wszystkie linki tutaj są przeznaczone dla programistów, którzy są już w materiale o wiele więcej
rubo77
1
@ rubo77 - „jak tworzyć” jest zbyt szerokie, aby można było na nie odpowiedzieć. Wszystko zależy od tego, co próbujesz spakować. Rzeczywiście, każdy z kroków w powyższej odpowiedzi może być indywidualnym Q z każdą szczegółową dobrą odpowiedzią.
fossfreedom
1
Nowa odpowiedź Tottiego jest już świetna
rubo77
86

Jak utworzyć plik .deb

To jest samouczek na temat tworzenia podstawowego pliku .deb z danego przykładowego skryptu. W tym samouczku najpierw tworzymy przykładowy program w bash, który po prostu pokazuje „CZEŚĆ Z PROGRAMU”. Następnie tworzymy plik kontrolny dla programu, aby stworzyć instalator Debiana. Na koniec są pakowane do .debpliku.

Kroki:

  1. utwórz przykładowy program w bash

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

    wklej do niego następujący kod

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. Spraw, aby program był wykonywalny

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. Utwórz plik kontrolny dla pakietu debian

    Utwórz plik o nazwie controlwewnątrz folderuDEBIAN

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

    i wklej następujące szczegóły

    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.
    

    Możesz edytować zawartość, jeśli chcesz. Przeczytaj więcej o formacie tego pliku tutaj i tutaj .

  4. Utwórz postinstskrypt, który jest wykonywany natychmiast po instalacji pakietu

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    następnie wklej

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

    i uczynić go wykonywalnym

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. Utwórz prermskrypt, który jest wykonywany przed usunięciem pakietu

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

    i uczynić go wykonywalnym

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. Twórz strukturę pakietów i kopiuj programy, dane itp.
    Utwórz strukturę zainstalowanych programów i ich danych. W tym przykładzie umieściliśmy plik w /bin.

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. Zbuduj plik .deb .

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

    .Zostanie automatycznie nazwę .debpliku z wersji, łuk itp lub nazwę niestandardowego

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

    Lub jeśli zbudujesz plik .deb

    debuild -k'your GPG key here' -S
    

    następnie możesz przesłać go do Ubuntu Launchpad za pomocą

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

    jak opisano tutaj (źródło: utwórz pakiet .deb ze skryptów lub plików binarnych )

  8. Zainstaluj nowo utworzony .debpakiet. Możesz go otworzyć za pomocą, software-centerale może nie pozwolić na instalację. Dlatego polecam użyć gdebimenedżera pakietów.

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

    Teraz możesz go zainstalować. Podczas instalacji powinien zostać wyświetlony dialog gtk

    Instalowanie programu: zenity_hello.sh ......

  9. Po zainstalowaniu otwórz terminal i wpisz zenity_hello. Jeśli program został poprawnie zainstalowany i wszystko w porządku, powinieneś zobaczyć okno dialogowe GTK

    CZEŚĆ Z PROGRAMU

  10. Usuwanie pakietu

    sudo apt-get remove zenity_hello
    

Opublikuj swoje repozytorium za 2 minuty

Ponieważ OP chce prostego sposobu na opublikowanie swoich pakietów, daję łatwy hack.

wymaganie: konto dropbox (lub dowolna inna usługa, na przykład github ) z folderem publicznym.

  1. Utwórz folder w folderze publicznym Dropbox, w którym umieścisz pliki * .deb:

    mkdir ~/Dropbox/Public/deb-packages  
    

    lub utwórz ten folder gdzie indziej i umieść dowiązanie symboliczne w swoim folderze publicznym:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. Przejdź do tego folderu i utwórz skrypt, który po uruchomieniu tworzy Packages.gz, zawierający wszystkie potrzebne informacje o twoich pakietach deb. Stwórz:

    gedit import.sh  
    

    włóż to w to:

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

    spraw, by był wykonywalny:

    chmod  x import.sh
    
  3. Skopiuj niektóre pliki * .deb do folderu. Może to być twoje własne lub niektóre, które nie są dostępne za pośrednictwem innych repozytoriów. Następnie przejdź do folderu i uruchom skrypt, który tam umieściliśmy:

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

    To powinno stworzyć tak zwany plik Packages.gz , który będzie szukał informacji, które pakiety znajdują się w tym repozytorium.


Otóż ​​to

Teraz poczekaj, aż Dropbox zsynchronizuje folder i pobierz publiczny adres URL zPackages.gz . Powinno to wyglądać mniej więcej tak:

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

Pozbądź się końca tego linku, dodaj do niego kilka słów, a teraz możesz użyć i wypełnić następujący wiersz dla sources.list:

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

To jest to, że masz własne repozytorium deb. Zawsze synchronizowany lokalnie, ale dostępny dla każdego, zawsze i wszędzie.

UWAGA: dpkg-scanpackages jest dostępny w celach dpkg-dev
informacyjnych

Totti
źródło
3
+1 świetnie! to zadziałało: użyłem Github, a tam surowy katalog na folder releases/patrz github.com/rubo77/mouse-speed/blob/master/release/…
rubo77
Opisuje PPA, ale jak mogę zbudować pakiet Debian Ubuntu
rubo77
3
Jeśli utworzysz plik .deb w kroku 7. debuild -us -uc -k'your GPG key here', możesz przesłać go dput ppa:<lp-username>/<ppa-name> packet-source.changesdo Launchpada w sposób opisany tutaj (źródło: utwórz pakiet .deb ze skryptów lub plików binarnych )
rubo77
@ rubo77, Dzięki, witam, aby dodać te informacje na końcu mojej odpowiedzi.
totti
1
OK, właśnie to zrobiłem, dowiedziałem się również, że potrzebujesz innych parametrów, aby Launchpad nie mógł teraz utworzyć pliku .deb (tylko -S): debuild -k'your GPG key here' -Sponieważ Launchpad utworzy plik deb (jeśli nie zostanie odrzucony) - co byłoby dla `-us -uc`?
rubo77
2

Będziesz potrzebować konta Launchpad.net, aby utworzyć PPA. Wystarczy kliknąć użytkownika na Launchpad (kliknij swoje imię i nazwisko w lewym górnym rogu) i utworzyć PPA. Może być konieczne podpisanie Kodeksu postępowania i zarejestrowanie klucza GPG na koncie.

GTRsdk
źródło