Come posso creare un PPA per un programma di lavoro?


36

Supponiamo che io abbia un'applicazione funzionante scritta in C, C ++ o Python. Voglio creare un PPA Launchpad in modo che altri possano installarlo facilmente da un pacchetto. Si prega di dare istruzioni passo per passo per farlo dall'inizio alla fine. (O fornire un collegamento che faccia lo stesso;)

  • Il linguaggio di programmazione è importante? (Potrebbe essere uno script bash?)
  • Devo aggiungere qualcosa alla mia build?
  • Dove dovrebbe installarsi la build?
  • Come definisco le dipendenze?
  • Come utilizzo le dipendenze?
  • Come posso creare un .deb?
  • Cosa devo fare prima di caricare su Launchpad?

1
Sto ponendo questa domanda perché a volte consiglio ai progetti FLOSS di creare un PPA (in modo da poterli installare facilmente :) - Mi piacerebbe essere in grado di indirizzarli a una risorsa approfondita o essere in grado di farlo da solo.
david.libremone,

Risposte:


33

Questa è una domanda molto ampia. Proverò a rispondere il più possibile, ma sicuramente NON sarà un'istruzione passo-passo. Questo perché non esiste un algoritmo passo-passo per la creazione di un pacchetto. Il modo in cui lo farai dipende da molti fattori, principalmente dal tipo di pacchetto (applicazione, libreria), dalla struttura del sorgente e da molti dettagli.

Fortunatamente, c'è una guida completa su http://packaging.ubuntu.com

Cercherò di aiutarti un po 'con la comprensione dell'intero processo, quindi quando avrai un po' più familiarità con esso. La Guida all'imballaggio include risorse per ulteriore aiuto.


Prima di tutto dovresti capire che la creazione di un pacchetto (un file .deb) è un processo separato dalla creazione di un PPA. La creazione di un PPA è una questione di andare al profilo del Launchpad e fare clic sul collegamento "Crea un nuovo PPA". È tutto. È stato creato, funziona, ma è vuoto. Per caricare un pacchetto devi prima crearne uno. Ma prima lasciami rispondere ad alcune delle tue domande minori.

  • Il linguaggio di programmazione NON ha alcuna importanza. Può essere un'applicazione C ++, uno script Bash, Brainfuck Hello World, un singolo file README o una serie di fantastiche foto. I pacchetti possono contenere qualsiasi file. Durante l'installazione il pacchetto viene estratto nella radice ("/") del file system. In questo modo possono mettere alcuni file nella cartella binari, aggiungere alcuni sfondi al set predefinito di GNOME o fornire all'utente uno script Bash.
  • È DO bisogno di aggiungere qualcosa alla fonte. Deve essere una directory di livello superiore denominata "debian". Ci saranno alcuni file con i dettagli del pacchetto: verranno usati per definire il tipo di pacchetto, ecc.
  • Le dipendenze sono elencate in uno di questi file (tra gli altri dettagli). Da dove prenderli? Sono semplicemente altri pacchetti utilizzati dall'applicazione. Lo sviluppatore dell'applicazione saprà quali librerie e risorse richiede il suo programma, quindi non dovrebbe avere problemi a elencarle.
    • Alcuni strumenti utilizzati per creare un pacchetto (pbuilder) possono riempire automaticamente le dipendenze, probabilmente determinando ciò che la tua app richiede durante la compilazione.
  • Si consiglia inoltre vivamente di utilizzare AutoTools . Questa è un'altra cosa che potresti dover aggiungere, ma probabilmente quasi tutti i software li usano già. AutoTools è un insieme di programmi estremamente utili: automake, autoconf e autoscan per citarne alcuni. Quando compili e installi un programma con il famoso ./configure && make && make install quindi gli autotools vengono utilizzati per gestire automaticamente l'origine, per preparare altre risorse incluse con l'origine all'installazione e per estrarre il risultato della compilazione in un posto appropriato (per rispondere alla tua domanda: la build verrà estratta in MOLTI posti separati. i binari andranno su / usr / local / bin, i documenti su / usr / local / share / docs ecc. Inoltre, i binari di un pacchetto andranno anche in luoghi diversi, come i binari su / usr / bin. con questo complicato layout di directory? Usa AutoTools: se ne occuperà automaticamente, ed è per questo che sono così utili).

La creazione di un pacchetto .deb può sembrare un processo davvero complicato, ma non è così difficile. Consiglio vivamente la guida ufficiale di Ubuntu alla creazione di pacchetti: http://packaging.ubuntu.com

È ENORME, ma vedrai che probabilmente puoi saltare la maggior parte di quel testo (a seconda del pacchetto che stai per compilare). Fondamentalmente, il processo di confezionamento è costituito da queste parti (tutte sono chiaramente spiegate nella Guida) :

  1. Init alcuni strumenti utilizzati per creare pacchetti.
  2. Ottieni la fonte
  3. Creare la directory ./debian e riempirla con i dati richiesti
  4. Costruisci il pacchetto con debuild [che dovrebbe creare un set di file, inclusi * .dsc, * _source.build, * _source.changes, che sono responsabili dei dati sul pacchetto e di come gestirlo (avrai anche una fonte .tar.gz)]
  5. Verifica se tutto funziona eseguendo pbuilder localmente (prenderà tutti questi file sopra menzionati e proverà a combinarli in un pacchetto .deb, costruendo automaticamente la fonte con l'aiuto di AutoTools - ecco perché sono cruciali per il packaging [francamente - no - puoi andare d'accordo senza di loro o con alcune alternative, ma questo è l'approccio più semplice e altri potrebbero richiedere una configurazione avanzata, poiché dovrai istruire il costruttore su come costruire il sorgente (usando il file ./debian/rules ) - ma non è per i principianti] ) - se vuoi semplicemente ottenere un pacchetto .deb, è fatto.

Ora dovrai caricarlo sul tuo PPA, che è spiegato in questa pagina di aiuto: https://help.launchpad.net/Packaging/PPA/Uploading

  1. Usa dput per caricare questi file su Launchpad
  2. Launchpad eseguirà pbuilder sui loro computer e genererà pacchetti in un ambiente pulito
  3. Infine, i pacchetti dovrebbero apparire nel PPA.

Come vedi, creare un PPA non è così semplice . Ma non aver paura , non è poi così difficile. Inoltre, ti consiglio di non incoraggiare gli sviluppatori a utilizzare un PPA, poiché probabilmente non ti ascolteranno, dal momento che avrebbero bisogno di fare qualche lavoro aggiuntivo (e se lo avessero voluto lo avrebbero già fatto), ma potresti voglio provare a supportare gli sviluppatori Ubuntu e l'intera comunità e fornire loro i pacchetti che hai preparato :)

Ti auguro buona fortuna con la creazione di pacchetti, spero che troverai la mia risposta utile :)

Il tuo amico Rafał Cieślak


Come è possibile creare un PPA non Launchpad, ospitato sulla propria infrastruttura? È solo un semplice server Web con la struttura di directory appropriata?
Prof. Moriarty,

l'esempio di brainf * ck era davvero necessario?
Camden,

5
  • Prima di poter caricare il pacchetto, è necessario configurarlo per il .debpackaging, consultare Ubuntu PackagingGuide .

  • Una volta che puoi creare un pacchetto per il tuo software, consulta la documentazione PPA di Launchpad . Ti guiderà dalla creazione di PPA al caricamento del tuo pacchetto.

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.