Come faccio a creare un PPA?


Risposte:


97

Utilizzando un Personal Package Archive ( PPA ), è possibile distribuire software e aggiornamenti direttamente agli utenti Ubuntu. Crea il tuo pacchetto sorgente, caricalo e Launchpad costruirà i binari e poi li ospiterà nel tuo repository apt.

Ecco una spiegazione dettagliata .


5
FWIW Sono stato in grado di attivare il mio PPA prima di firmare il codice di condotta.
Sparhawk,

2
Questa è la risposta migliore Ti è stato appena detto come creare un PPA. La risposta che segue (di totti) non è un PPA, ma è un repository pubblico. I due sono diversi, nonostante (potenzialmente) realizzano la stessa cosa. Dice anche nella prima riga della sua risposta: "Questa domanda ha una risposta ben scritta e accettata. Poiché l'OP vuole un modo semplice per pubblicare i suoi pacchetti, sto dando un trucco semplice". Perché preferisci l'hacking semplice non lo rende la risposta migliore.
lbaile200,

OK, ma nessuno dei collegamenti in questa risposta descrive davvero come farlo da zero. tutti i collegamenti qui sono fatti per gli sviluppatori, che sono già molto più nel materiale
rubo77

1
@ rubo77 - il "come creare" è strettamente troppo ampio per essere responsabile. Tutto dipende da cosa stai cercando di impacchettare. In effetti, ciascuno dei passaggi della risposta sopra può essere un singolo Q con una buona risposta dettagliata ciascuno.
Fossfreedom

1
La nuova risposta di Totti è già ottima
rubo77,

86

Come creare un file .deb

Questa è un'esercitazione sulla creazione di un file .deb di base da un determinato script di esempio. In questo tutorial prima creiamo un programma di esempio in bash che mostra semplicemente "HELLO FROM PROGRAM". Quindi creiamo un file di controllo per il programma per creare un programma di installazione debian. Alla fine vengono impacchettati in un .debfile.

passi:

  1. creare un programma di esempio in bash

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

    incolla il seguente codice in esso

    #!/bin/bash
    echo 'HELLO FROM PROGRAM' | zenity --text-info 
    
  2. Rendi eseguibile il programma

    chmod +x "$HOME/create_deb/pgmdir/zenity_hello.sh"
    
  3. Creare un file di controllo per il pacchetto debian

    Crea un file chiamato controlall'interno della cartellaDEBIAN

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

    e incolla i seguenti dettagli

    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.
    

    Puoi modificare i contenuti se vuoi. Maggiori informazioni sul formato di questo file qui e qui .

  4. Crea uno postinstscript, che viene eseguito immediatamente dopo l'installazione del pacchetto

    gedit "$HOME"/create_deb/DEBIAN/postinst
    

    quindi incolla

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

    e renderlo eseguibile

    chmod +x "$HOME/create_deb/DEBIAN/postinst"
    
  5. Crea uno prermscript, che viene eseguito prima della rimozione del pacchetto

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

    e renderlo eseguibile

    chmod +x "$HOME/create_deb/DEBIAN/prerm"
    
  6. Crea la struttura del pacchetto e copia i programmi, i dati, ecc.
    Crea una struttura dei tuoi programmi installati e dei suoi dati. In questo esempio inseriamo il file in /bin.

    mkdir -p "$HOME"/create_deb/bin
    cp "$HOME/create_deb/pgmdir/zenity_hello.sh" "$HOME/create_deb/bin/zenity_hello"
    
  7. Costruire il .deb file.

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

    Il .nome verrà automaticamente assegnato al .debfile con versione, arch ecc. O il tuo nome personalizzato

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

    O se si crea il file .deb con

    debuild -k'your GPG key here' -S
    

    quindi puoi caricarlo su Ubuntu Launchpad con

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

    come descritto qui (fonte: crea un pacchetto .deb da script o binari )

  8. Installa il .debpacchetto appena creato . È possibile aprirlo con software-centerma potrebbe non consentire l'installazione. Quindi consiglio di usare il gdebigestore pacchetti.

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

    Ora puoi installarlo. Durante l'installazione dovresti vedere un dialogo GTK

    Programma di installazione: zenity_hello.sh ......

  9. Dopo l'installazione, aprire un terminale e digitare zenity_hello. Se il programma è installato correttamente e tutto OK, dovresti vedere un dialogo GTK

    CIAO DAL PROGRAMMA

  10. Rimozione del pacchetto

    sudo apt-get remove zenity_hello
    

Pubblica il tuo repository in 2 minuti

Dato che l'OP vuole un modo semplice per pubblicare i suoi pacchetti, sto dando un trucco semplice.

requisito: account dropbox (o qualsiasi altro servizio, ad esempio github ) con una cartella pubblica.

  1. Crea una cartella nella cartella Public Dropbox in cui inserisci i tuoi file * .deb:

    mkdir ~/Dropbox/Public/deb-packages  
    

    o crea quella cartella altrove e inserisci un link simbolico nella tua cartella pubblica:

    mkdir ~/deb-packages
    cd ~/Dropbox/Public
    ln -s ~/deb-packages/ deb-packages
    
  2. Vai in quella cartella e crea uno script che, una volta eseguito, crei Packages.gz, contenente tutte le informazioni necessarie sui tuoi pacchetti deb. creare:

    gedit import.sh  
    

    mettici dentro questo:

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

    renderlo eseguibile:

    chmod  x import.sh
    
  3. Copia alcuni file * .deb nella cartella. Potrebbe essere il tuo o alcuni che non sono disponibili tramite altri repository. Quindi vai nella cartella ed esegui lo script che abbiamo inserito:

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

    Ciò dovrebbe creare il cosiddetto file Packages.gz , che apt cerca di sapere quali pacchetti si trovano in questo repository.


Questo è tutto

Ora, attendi che Dropbox sincronizzi la cartella e prendi l' URL pubblico dalPackages.gz . Dovrebbe assomigliare a qualcosa di simile a questo:

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

Sbarazzati della fine di quel link, metti qualche parola in più e ora puoi usare e popolare la seguente riga per il sources.list:

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

Ecco fatto che hai il tuo repository deb in esecuzione. Sincronizzato sempre localmente, ma disponibile a chiunque, sempre e ovunque.

NOTA: dpkg-scanpackages è disponibile da dpkg-dev
riferimento


3
+1 fantastico! questo ha funzionato: ho usato Github e lì la directory non elaborata per una cartella releases/vedi github.com/rubo77/mouse-speed/blob/master/release/…
rubo77

Questo descrive un PPA self-hosted, ma come posso creare un pacchetto debian Ubuntu
rubo77

3
Se si crea il file .deb al passaggio 7. con, debuild -us -uc -k'your GPG key here'è possibile caricarlo dput ppa:<lp-username>/<ppa-name> packet-source.changessu Launchpad come descritto qui (fonte: creare un pacchetto .deb da script o binari )
rubo77

@ rubo77, grazie, ti do il benvenuto per aggiungere queste informazioni alla fine della mia risposta.
Totti,

1
OK, ho appena scoperto che ho bisogno di altri parametri per il Launchpad per non creare il file .deb in questo momento (solo -S): debuild -k'your GPG key here' -Sperché Launchpad creerà il file deb (se non viene rifiutato) - cosa sarebbe stato `-us -uc`?
rubo77,

2

Per creare un PPA avrai bisogno di un account Launchpad.net. Fai clic sul tuo utente su Launchpad (fai clic sul tuo nome in alto a sinistra) e crea un PPA. Potrebbe essere necessario firmare prima il codice di condotta e avere una chiave GPG registrata con il proprio account.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.