4. Fare pratica

Ora è il momento di fare pratica da soli. Ho un semplice script di shell chiamato 'linuxstatus' che desidero installare come '/usr/bin/linuxstatus'. Quindi si crei in primo luogo una directory chiamata 'debian' e si copi, all'interno di questa, il file 'linuxstatus'.


$ mkdir -p ./debian/usr/bin
$ cp linuxstatus ./debian/usr/bin

4.1. control

Iniziamo con il file control. Il numero di versione deve avere un trattino seguito da un numero che descrive la versione del pacchetto Debian, per esempio '1.1-1'. Se il proprio programma consiste solo di uno script shell portabile, si usi 'all' come sua 'Architecture'.

Per il campo 'Depends' è necessario scoprire a quale pacchetto appartiene un determinato file o programma dal quale il proprio nuovo pacchetto dipende. Per scoprire questo si può usare 'dpkg -S <file>', p.e..:


$ dkpg -S /bin/cat
coreutils: /bin/cat

Quindi per scoprire di più circa il pacchetto 'coreutils' si può usare il comando 'apt-cache showpkg coreutils' che dirà, tra le altre cose, il numero di versione attualmente installato sul sistema.

Come nota a margine, ci sono altri due maniere per trovare le stesse informazioni. C'è una pagina web dove si possono cercare file Debian: http://www.debian.org/distrib/packages. Si vada in fondo alla pagina e si riempia il form.

Ultima ma non per importanza, c'è una graziosa applicazione GUI chiamata 'kpackage', che fornisce comode opzioni di navigazione tra i pacchetti e permette anche di ricercare pacchetti, dati i nomi dei singoli file.

I campi 'Suggests', 'Conflicts', 'Replaces', ecc. possono essere omessi se non necessari.

Ecco quindi il risultato del nostro primo file 'control':

Package: linuxstatus
Version: 1.1-1
Section: base
Priority: optional
Architecture: all
Depends: bash (>= 2.05a-11), textutils (>= 2.0-12), awk, procps (>= \
1:2.0.7-8), sed (>= 3.02-8), grep (>= 2.4.2-3), coreutils (>= 5.0-5)
Maintainer: Chr. Clemens Lee <clemens@kclee.com>
Description: Informazioni sul sistema Linux
 Questo script fornisce una vasta descrizione
 dei differenti aspetti del sistema.

Il file 'control' viene copiato in una directory chiamata 'DEBIAN' all'interno dell'altra directory 'debian'.


$ mkdir -p debian/DEBIAN
$ find ./debian -type d | xargs chmod 755   # questo è necessario su Debian Woody, non chiedetemi perché
$ cp control debian/DEBIAN

Se ci si aspetta che il proprio pacchetto abbia in futuro un'utenza maggiore, può essere d'aiuto la lettura di questo articolo: Writing Debian package descriptions.

4.2. dpkg-deb

Ora è quasi pronto. Si dia:


$ dpkg-deb --build debian
dpkg-deb: building package `linuxstatus' in `debian.deb'.
$ mv debian.deb linuxstatus_1.1-1_all.deb

È stato più facile di quanto previsto. Ora è sufficiente installare questo pacchetto sul proprio sistema ed è tutto fatto:


root# dpkg -i ./linuxstatus_1.1-1_all.deb

Si scriva 'linuxstatus' o 'ls -l /usr/bin/linuxstatus' per vedere se ha funzionato. Se non si gradisce più il proprio pacchetto, si scriva solo 'dpkg -r linuxstatus' e si controlli nuovamente se il pacchetto è stato disinstallato. Comunque, se si installa una nuova versione del pacchetto non si deve rimuovere prima il pacchetto precedente.

Se si è curiosi riguardo allo schema del numero della versione e le convenzioni usate per nominare un pacchetto Debian, si legga this section in The Debian Reference [NdT: in italiano].