sabato 19 luglio 2014

Creare un pacchetto e pubblicarlo su Launchpad

Abbiamo realizzato un programma in bash, c, c++, python, gambas, .... e vogliamo pubblicarlo? ecco come si fa:

Inanzitutto compiliamo il nostro file come script eseguibile senza dargli l'estensione ".sh".
Il nome che scegliamo è importante in quanto sarà il shortname con cui richiameremo il programma dal terminale: se salviamo il file come "app" nel terminale sarà:
utente@pc:~$app
Questo implica il fatto che il nostro programma potrebbe avere problemi se si chiama come iun altro programma di un altro sviluppatore!

Bene ora si comincia: creiamo le seguenti cartelle (i nomi in corsivo sono a vostra scelta):
$ cd ~
$ mkdir pacchetti
$ cd pacchetti
$ mkdir app-1.0.0
$ cd app-1.0.0

Ora creiamo lo scheletro del pacchetto con debhelper:
$ dh_make -n

rispondiamo "s" alla prima domanda (stiamo creando un pacchetto singolo) e premiamo "invio" alla seconda domanda per accettare i suggerimenti su e-mail, nome del maintainer, licenza, ...
A questo punto si può notare che è stata creata una directory "debian".

In parte alla cartella "debian" creiamo una cartella "script" dove metteremo i nostri eseguibili.
Assicuriamoci che essi abbiamo i corretti permessi di esecuzione:
$ chmod 755 script1 script2....

Ora entriamo nella cartella "debian":
file control:
Source: app Section: utils
Priority: optional
Maintainer: Nome Cognome <mail>
Build-Depends: debhelper (>= 8.0.0)
Standards-Version: 3.9.4
Homepage:
Package: tobw
Architecture: all
Description: Descrizione breve Descrizione lunga Usare lo spazio a inizio riga per la descrizione
 Se abbiamo bisogno di dipendenze possiamo aggiungerle: Depends: ghostscript (>=1.0.0)

file changelog
Qui dobbiamo cambiare la scritta unstable (o stable) con la versione attuale di Ubuntu (es.: trusty)

Ora creiamo un file install dove scriveremo:
script/* usr/bin/
A indicare che copi tutto il contenuto della cartella script in /usr/bin

Ora è tutto pronto per creare il pacchetto. Spostiamoci nella directory "app-1.0" ed eseguiamo:
$ dpkg-buildpackage -us -uc

Ora che abbiamo un pacchetto dobbiamo firmarlo:

Per prima cosa creiamo una chiave GPG:
$ gpg --gen-key

rispondiamo "1"alla prima domanda ovvero DSA e ElGamal, diamo invio;
come dimensione lasciamo pure 1024, diamo invio;
mettiamo "0" come scadenza, diamo invio;
rispondiamo "s", diamo invio;
ora ci verrà chiesto Nome e Cognome,indirizzo email e il commento per la coppia di chiavi
ora premiamo 'o' e invio;
ora ci verrà richiesta la password per le chiavi, inseriamola e invio.

In debian/changelog dobbiamo scrivere Nome Cognome (commento) <mail> con i dati spora inseriti.

Per caricare un pacchetto in rete dobbiamo registrare la nostra chiave presso il server di Ubuntu:
Apriamo Password e Chiavi e selezioniamo la nostra chiave.
Remoto -> Sincronizza e pubblica chiavi. e sincronizza chiave con hkp://keyserver.ubuntu.com

Spostiamoci nella directory "app-1.0.0" ed eseguiamo:
$ dpkg-buildpackage -s

Ora dobbiamo registrarci su Launchpad:
Colleghiamoci a launchpad.net e seguiamo la procedura guidata di log on.

Ora nella nostra Dashboard clicchiamo sulla matita nel cerchio giallo vicino a OpenPGP Keys:
diamo $gpg --fingerprint  e copiamo la chiave nella casella di testo e premiamo import key.

Ora riceveremo una mail con un link di conferma, essendo cifrata per poterla leggere occorre un plugin il cui link è nella mail stessa.

Ora possiamo premere Create a new PPA e seguire la procedura guidata.

E ora:
dput ppa:nostroppa '*source.changes' 


Per effettuare modifiche lavoriamo sulla directory di prima (se la abbiamo cancellata basta dare dpkg-source -x app_1.0.0.dsc per ricrearla) e alla fine dare:
dch -i
Che mette la data di aggiornamento e ci permette di scrivere un commento su ciò che abbiamo modificato.

Poi basta ridare  dpkg-buildpackage -s e dput ppa:nostroppa 'app-1.0.0_source.changes'



Nessun commento:

Posta un commento

Si prega di non commentare in modo volgare e/o offensivo.