Creare Un Pacchetto Debian [Parte 2]

Nella prima parte di questo articolo, che potete rileggere in questa pagina, abbiamo visto come creare un pacchetto .deb.

In questa parte vedremo come costruire un pacchetto che permette di verificare le dipendenze da altri pacchetti, ma non solo, si potranno gestire i file di configurazione in modo differente (per evitare di perdere le impostazioni dell’utente)  e, in seguito, vedremo anche come eseguire script di post/pre installazione/rimozione.

Supponiamo di aver costruito la nostra alberatura di progetto, come per l’esempio precedente, magari con qualche file in più, una icona, un lanciatore e un file di configurazione:

ziogeek-app_1.0.0-1_all/usr/bin/ziogeek-app.elf
ziogeek-app_1.0.0-1_all/usr/lib/ziogeek-app.so
ziogeek-app_1.0.0-1_all/etc/ziogeek-app.conf
ziogeek-app_1.0.0-1_all/usr/share/icons/ziogeek-app.ico
ziogeek-app_1.0.0-1_all/usr/share/applications/ziogeek-app.desktop

A questo punto entriamo nella directory radice dell’applicazione e creiamo una cartella DEBIAN (è obbligatorio che sia scritto in maiuscolo):

cd ziogeek-app_1.0.0-1_all
mkdir DEBIAN

All’interno di questa cartella vengono salvati i file di gestione del pacchetto, noi vedremo brevemente i più importanti, per una guida completa si rimanda alla documentazione ufficiale.

Il file principale è sicuramente control all’interno del quale vengono memorizzate tra le altre cose, le informazioni sulle dipendenzeb da altri pacchetti. Esistono due tipi di pacchetti debian, i source packet (che contengono i file sorgenti dei programmi) e i binary packet che contengono i file eseguibili, le librerie etc.
In questo esempio creeremo un binary packet, il cui file control è riportato di seguito:

Package: ziogeek-app
Version: 1.0.0
Section: devel
Priority: optional
Architecture: all
Maintainer: Alessandro Maggi
Depends: libc6 (>= 2.1), mutt, debconf (>= 0.2.17)
Description: La app più cool del momento
 Il file control non ammette la presenza di righe vuote.
 Per separe è possibile utilizzare una riga con solo un punto iniziale.
 .
 Notare lo spazio all'inizio di ogni riga del campo description.

Il file control ha diverse sezioni, noi abbiamo utilizzato solo quelle mandatorie e quelle raccomandate. Descriviamo brevemente il file:

  • Package: è il nome del pacchetto.
  • Version: la versione.
  • Section: la sezione dove dovra comparire il nostro pacchetto all’interno del gestore del pacchetto (nel nostro caso sviluppo).
  • Priority: indica quanto il programma è essenziale al sistema.
  • Architecture: l’architettura per il quale è stato compilato.
  • Maintainer: Il manutentore del pacchetto.
  • Depends: indica i pacchetti necessari al funzionamento del nostro pachhetto. Nel caso questi pacchetti non siano presenti nel sistema, il pacchetto verrà comunque installato ma fallirà la fase di configurazione. Esiste una forma di dipendenza più forte (Pre-Depends:) con la quale il pacchetto non verrà nemmeno installato nel sistema se non sarranno già presenti le sue dipendenze.
  • Description: come è facile intuire, fornisce la descrizione del pacchetto. La prima riga è una sintesi di una linea, a cui fa seguito una descrizione più dettagliata.

Il file control può contenere molti altri campi, descritti nella documentazione ufficiale.

Un altro file molto importante all’interno della directory debian è conffiles. Questo è semplicemente una lista dei file all’interno del nostro pacchetto che vanno considerati come file di configurazione. E’ importante segnalare i file di configurazione poiché assi avranno un trattamento speciale durante l’installazione o la rimozione del pacchetto (ad esempio non verranno sovrascritti o cancellati in fase di upgrade).

Nel nostro esempio conffiles contiene una sola riga

etc/ziogeek-app.conf

A questo punto è possibile creare il pacchetto tramite il comando dpkg-deb

cd ..
fakeroot dpkg-deb --build ziogeek-app_1.0.0-1_all/

Il nostro .deb a questo punto può essere installato (o rimosso) con i tool classici della vostra distribuzione (e.g.dpgk -i e dpkg -r).
Il pacchetto creato seguento questo procedimento è di qualità decisamente superiore a quello creato durante la prima sezione: non solo possiamo utilizzare i tools della distribuzione per installare/disinstallare il nostro software senza lasciare sporcizia in giro per il filesystem; il nostro pacchetto ora è in grado di dichiarare le dipendenze e rifiutarsi di essere installato/configurato se queste non sono soddisfatte.
Inoltre i nostri file di configurazione non verranno più persi e potremo mantenere le configurazioni precedenti senza doverci preoccupare di salvarle manualmente

Nella prossima puntata vedremo come laciare degli script durante l’installazione/rimozione, e interagire
con l’utente, oltre all’utilizzo di alcuni programmi che ci possono facilitare la vita. Stay Tuned!!

© 2008 Ziogeek.com

Tag: , ,