Questo documento proverà a descrivere la costruzione di un pacchetto Debian GNU/Linux per un comune utente Debian (e aspirante sviluppatore), utilizzando un linguaggio immediato e con l'ausilio di esempi concreti. C'è un detto latino che dice Longum iter est per preaecepta, breve et efficax per exempla! (La via è lunga usando la teoria, ma breve ed efficiente con gli esempi!).
Una cosa che rende Debian una distribuzione Linux di prima scelta, è il suo sistema di pacchettizzazione. Sebbene ci sia una vasta quantità di software già in formato Debian, qualche volta è necessario installare del software che non lo è. Potresti chiederti come creare personalmente i tuoi pacchetti e forse pensare che sia un compito molto difficile. In effetti, se sei un novizio di Linux è dura, ma se sei un un utente stagionato non puoi non leggere questo documento subito :-) Avrai bisogno di conoscere dei rudimenti di programmazione Unix, ma certamente non occorrerà che tu sia un mago della programmazione.
Una cosa è certa, però: per creare propriamente e manutenere pacchetti Debian ti occorrono ore-uomo di lavoro. Non commettere errori, per far funzionare il nostro sistema, i maintainer necessitano di essere insieme tecnicamente competenti e diligenti.
Questo documento spiegherà ogni piccolo (e in apparenza irrilevante) passo, e ti aiuterà a creare il tuo primo pacchetto, e conseguire qualche esperienza nel costruire i successivi rilasci di questo e forse altri pacchetti più in là.
Versioni aggiornate di questo documento dovrebbero sempre essere disponibili
all'indirizzo http://www.debian.org/doc/maint-guide/
e nel pacchetto `maint-guide
'. La traduzione in italiano è anche
disponibile nel pacchetto `maint-guide-it
'.
Prima di iniziare, dovresti assicurarti di avere correttamente installati alcuni pacchetti addizionali, necessari per lo sviluppo del software. Osserva che la lista non contiene alcun pacchetto etichettato `essential' o `required' - ci aspettiamo che tu li abbia già installati.
Questa revisione del documento è stata aggiornata per i pacchetti in Debian 2.2 (`potato') and 3.0 (`woody').
I pacchetti seguenti fanno parte della installazione standard della Debian, per cui probabilmente li hai già installati (insieme ai pacchetti addizionali dai quali dipendono). Comunque dovresti controllare con `dpkg -s <package>'.
dpkg-dev
- questo pacchetto contiene gli strumenti necessari per
spacchettare, creare e caricare i pacchetti sorgenti Debian. (vedi
dpkg-source(1)
)
file
- questo comodo programma può stabilire la tipologia di un
file. (vedi file(1)
)
gcc
- il compilatore GNU C, necessario se il tuo programma come
molti altri è scritto nel linguaggio di programmazione C. (vedi
gcc(1)
, Questo pacchetto caricherà anche un gruppo di altri
pacchetti come binutils
che include programmi usati per assemblare
e linkare file oggetto (vedi `info binutils` nel pacchetto
binutils-doc
) e cpp
, il preprocessore C. (vedi
cpp(1)
)
g++
- il compilatore GNU C++, necessario se il tuo programma è
scritto in C++. (vedi g++(1)
).
libc6-dev
- le librerie e i file header che il gcc richiede per la
compilazione e il link dei file oggetto. (vedi `info libc' nel pacchetto
glibc-doc
)
make
- generalmente la creazione di programmi richiede una serie
di passi. Piuttosto di riscrivere continuamente gli stessi comandi, puoi
utilizzare questo programma per automatizzare il processo, creando dei
`Makefile'. (vedi `info make`)
patch
- questo programma di utilità molto utile impiega un file
contenente una lista di differenze (prodotta dal programma diff) e la applica
al file originale, per produrre una versione modificata. (vedi
patch(1)
)
perl
- Perl è uno dei linguaggi per script interpretati più
utilizzati sui moderni sistemi simil-Unix, spesso definito come "il
coltellino svizzero di Unix". (vedi perl(1)
)
Probabilmente vorrai installare i pacchetti seguenti, anche:
autoconf
e automake
- molti programmi nuovi usano
script di configurazione e Makefile preprocessati con l'aiuto di programmi come
questi. (vedi `info autoconf`, `info automake`)
dh-make
e debhelper
- dh-make è necessario per creare
lo skeleton del nostro pacchetto di esempio, e utilizzerà alcuni strumenti di
debhelper per creare i pacchetti. Non sono essenziali per la creazione di
pacchetti, ma sono altamente raccomandati per i nuovi
maintainer. Questo rende l'intero processo molto più semplice da iniziare e
controllare successivamente. (vedi dh_make(1)
,
debhelper(1)
, /usr/share/doc/debhelper/README)
devscripts
- questo pacchetto contiene alcuni utili script che
possono essere di aiuto per il maintainer, ma anche questi non sono
strettamente necessari per la creazione di pacchetti. (vedi
/usr/share/doc/devscripts/README.gz)
fakeroot
- questa programma di utilità permette di emulare i
privilegi di root necessari per alcune parti del processo di creazione. (vedi
fakeroot(1)
)
gnupg
- un programma che ti consente di firmare
elettronicamente i pacchetti. Questo è soprattutto importante se vuoi
distribuirli ad altre persone, e certamente lo farai quando il tuo lavoro verrà
incluso nella distribuzione Debian. (vedi gpg(1)
)
g77
- il compilatore GNU Fortran 77, necessario se il tuo
programma è scritto in Fortran. (vedi g77(1)
)
gpc
- il compilatore GNU Pascal, necessario se il tuo programma è
scritto in Pascal. Degno di nota qui è fp-compiler
, il
Compilatore Free Pascal, che è anche adatto a questo compito. (vedi
gpc(1)
, ppc386(1)
)
imake
e xmkmf
- alcuni programmi, generalmente quelli
fatti per X11, usano anche questi programmi per generare i Makefile da insiemi
di macro funzioni. (vedi imake(1)
, xmkmf(1)
)
lintian
- questo è il verificatore dei pacchetti Debian, che
permette di scoprire errori comuni dopo la costruzione del pacchetto e spiega
gli errori trovati. (vedi lintian(1)
,
/usr/share/doc/lintian/lintian.html/index.html)
Quanto segue è la documentazione molto importante che dovresti leggere insieme a questo documento:
debian-policy
- la Policy include la struttura e i contenuti
dell'archivio, una serie di indicazioni sul disegno del sistema operativo, lo
Standard della Gerarchia del Filesystem (che dice dove ogni file e directory
dovrebbe stare), ecc. La cosa che per te è più importante è che descrive gli
obblighi che ogni pacchetto deve soddisfare per essere incluso nella
distribuzione. (vedi /usr/share/doc/debian-policy/policy.html/index.html)
developers-reference
- contiene tutto il materiale non
specificatamente relativo ai dettagli tecnici della pacchettizzazione, come la
struttura dell'archivio, come rinominare, rendere orfano o prendere in carico
un pacchetto, come fare gli NMU, come gestire i bug, quando e dove fare i
caricamenti, ecc. (vedi
/usr/share/doc/developers-reference/developers-reference.html/index.html)
Le brevi note date sino a questo punto servono solo come introduzione a cosa
ciascun pacchetto fa. Prima di continuare, leggi approfonditamente la
documentazione di ogni programma, almeno per un uso standard. Potrà sembrarti
molto pesante farlo adesso, ma più avanti sarai lietissimo di averlo
fatto. Nota: debmake
è un pacchetto che contiene alcuni programmi
con funzioni simile a dh-make, ma il suo specifico uso non è
illustrato in questo documento, perchè il suo uso è sconsigliato. Si
rimanda al manuale di
Debmake
per maggiori informazioni.
Ci sono due tipi di pacchetti che puoi creare, sorgente e binario. Un pacchetto sorgente contiene codice che puoi compilare in un programma. Un pacchetto binario contiene il solo programma finito. Non confondere il sorgente di un programma con i sorgenti del pacchetto del programma! Leggi gli altri manuali se hai necessità di avere maggiori dettagli sulla terminologia.
In Debian, il termine `maintainer' è utilizzato per la persona che crea pacchetti, `upstream author' per chi ha realizzato il programma, e `upstream maintainer' per la persona che correntemente manutiene quel programma, al di fuori di Debian. Generalmente author e upstream maintainer sono la stessa persona - e talvolta anche il maintainer è la stessa persona. Se hai realizzato un programma, e vuoi che faccia parte di Debian, sentiti libero di sottomettere la richiesta per diventare un maintainer.
Una volta creato il pacchetto (o mentre lo fai), dovrai diventare un maintainer Debian ufficiale, se vuoi che il tuo programma vada a far parte della prossima distribuzione (se il programma è utile perché no?). La procedura è spiegata nella Guida di Riferimento per lo Sviluppatore. Sei pregato di leggerla.
Guida per il nuovo Maintainer
versione 1.2, 6 Aprile 2002.joy-mg@debian.org
frankie@debian.org