[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ successivo ]
Questo documento ha l'obiettivo di descrivere le procedure necessarie per la costruzione di un pacchetto Debian GNU/Linux, per un normale 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!).
Questo documento è stato aggiornato per la distribuzione Debian squeeze. [1]
Una delle cose che rende Debian una delle distribuzioni GNU/Linux più importanti, è il suo sistema di pacchettizzazione. Sebbene ci sia una vasta quantità di software disponibile sotto forma di pacchetto Debian, qualche volta è necessario installare del software per il quale non è stato ancora creato il pacchetto. Si potrebbe pensare che creare dei pacchetti sia un compito molto difficile. In effetti, se si è alle prime armi con GNU/Linux è dura, ma se si ha esperienza non si può non leggere questo documento. :-) Servirà conoscere dei rudimenti di programmazione Unix, ma di sicuro non sarà necessario essere un mago della programmazione.
Una cosa però è certa: per creare in maniera corretta e manutenere dei pacchetti Debian serviranno svariate ore di lavoro. Per far funzionare il nostro sistema, i maintainer devono stare attenti a non commettere errori, essere scrupolosi e tecnicamente competenti.
Questo documento spiegherà ogni piccolo (e forse all'inizio irrilevante) passo, aiuterà nella creazione del primo pacchetto e ad acquisire l'esperienza necessaria per manutenerne i successivi rilasci e possibilmente creare in futuro ulteriori pacchetti.
Se è necessario qualche aiuto sulla pacchettizzazione, si consiglia la lettura di Dove trovare aiuto, Sezione 1.4.
Le versioni aggiornate di questo documento dovrebbero essere disponibili
all'indirizzo http://www.debian.org/doc/maint-guide/
e nel pacchetto maint-guide
. La traduzione in italiano è
disponibile anche nel pacchetto maint-guide-it
.
Prima di iniziare, bisogna assicurarsi di avere installato correttamente alcuni pacchetti aggiuntivi, necessari per lo sviluppo. Da notare che la lista non contiene nessun pacchetto etichettato come essenziale o richiesto - ci aspettiamo che siano già installati nel sistema.
I seguenti pacchetti fanno parte dell'installazione standard di Debian, per cui probabilmente sono già presenti nel sistema (insieme ai pacchetti aggiuntivi dai quali dipendono). Si può effettuare un controllo con "aptitude show pacchetto".
Il pacchetto più importante da installare in un sistema in cui si ha intenzione
di sviluppare è build-essential
. Questo includerà altri
pacchetti necessari per avere un ambiente di base per la compilazione dei
programmi.
Per alcuni tipi di pacchetti questo è tutto quello che serve, ci sono però una serie di pacchetti che, pur non essendo essenziali per lo sviluppo, vengono in aiuto allo sviluppatore o possono essere richiesti dal pacchetto su cui si lavora:
file
- questo semplice programma stabilisce la tipologia di un
file. (vedere file(1)
)
patch
- questo utile programma usa un file contenente una serie di
differenze (prodotta dal programma diff) e le applica al file originale, per
produrre una versione modificata. (vedere patch(1)
)
perl
- Perl è uno dei linguaggi di scripting più utilizzati sui
moderni sistemi Unix e derivati, spesso definito come "il coltellino
svizzero di Unix". (vedere perl(1)
)
python
- Python è un altro linguaggio di scripting molto
utilizzato sui sistemi Debian, combina una notevole potenza con una sintassi
molto chiara. (vedere python(1)
)
autoconf
, automake
e autotools-dev
-
diversi programmi recenti usano script di configurazione e
Makefile
preprocessati con l'aiuto di programmi come questi.
(vedere "info autoconf", "info
automake") autotools-dev
tiene aggiornate le versioni
di alcuni file di automazione e contiene la documentazione che spiega il modo
migliore per utilizzare questi file.
dh-make
and debhelper
- dh-make
is
necessary to create the skeleton of our example package, and it will use some
of the debhelper
tools for creating packages. They are not
essential for creation of packages, but are highly recommended for new
maintainers. It makes the whole process very much easier to start, and control
afterwards. (see dh_make(1)
, debhelper(1)
,
/usr/share/doc/debhelper/README
) [2]
devscripts
- questo pacchetto contiene alcuni pratici script che
possono essere utili ai maintainer, anche se non sono strettamente necessari
per la creazione dei pacchetti. I pacchetti consigliati o suggeriti da questo
pacchetto andrebbero presi in considerazione. (vedere
/usr/share/doc/devscripts/README.gz
)
fakeroot
- questo programma permette di fingere di essere root,
dato che è necessario per l'esecuzione di alcune parti del processo di
creazione del pacchetto. (vedere fakeroot(1)
)
gnupg
- questo programma consente di firmare
elettronicamente i pacchetti. Questo è importante soprattutto se si vuole
distribuirli ad altre persone, e verrà sicuramente fatto quando un pacchetto
sarà pronto per essere incluso nella distribuzione Debian. (vedere
gpg(1)
)
gfortran
- il compilatore GNU Fortran 95, necessario se il
programma è scritto in Fortran. (vedere gfortran(1)
)
gpc
- il compilatore GNU Pascal, necessario se il programma è
scritto in Pascal. Un sostituto degno di nota è fp-compiler
, il
Compilatore Free Pascal. (vedere gpc(1)
, ppc386(1)
)
xutils-dev
- alcuni programmi, generalmente quelli fatti per X11,
usano questi strumenti per generare i Makefile
da una serie di
funzioni macro. (vedere imake(1)
, xmkmf(1)
)
lintian
- questo è l'analizzatore dei pacchetti Debian, una volta
costruito il pacchetto, permette di scoprire gli errori più comuni, cercando di
spiegarli. (vedere lintian(1)
,
/usr/share/doc/lintian/lintian.html/index.html
)
pbuilder
- questo pacchetto contiene i programmi che vengono usati
per creare e manutenere un ambiente chroot
. Creare pacchetti
Debian nell'ambiente chroot
permette di verificare le dipendenze
appropriate ed evitare bug di tipo FTBS (Fails To Build From Source, non
compila da sorgente). (vedere pbuilder(8)
e
pdebuild(1)
)
patchutils
- questo pacchetto contiene dei programmi che lavorano
con le patch, come lsdiff
, interdiff
e
filterdiff
.
quilt
- questo pacchetto aiuta a gestire una serie di patch,
tenendo traccia dei cambiamenti apportati. Le patch sono organizzate in
maniera logica come una pila, è possibile applicare(=push) le modifiche
apportate dalla patch, oppure annullarle(=pop), semplicemente muovendosi
attraverso la pila. (vedere quilt(1)
,
/usr/share/doc/quilt/README.Debian
)
git-core
- questo pacchetto contiene un famoso sistema per il
controllo delle versioni, progettato per gestire progetti molto grandi con
velocità ed efficienza; è utilizzato da molti progetti open source, tra cui il
kernel Linux. (see git(1)
,
/usr/share/doc/git-doc/index.html
)
Segue una serie di documenti molto importanti che è consigliabile leggere insieme a questo documento:
debian-policy
- il manuale delle policy
Debian
comprende le spiegazioni riguardanti la struttura e il
contenuto dell'archivio Debian, numerose problematiche inerenti la
progettazione del sistema operativo, lo Standard della Gerarchia del Filesystem
(ndr. Filesystem Hierarchy Standard), (che indica la posizione prevista per
ogni file e directory), ecc. In questo contesto, l'argomento più importante è
la descrizione dei requisiti che ogni pacchetto deve soddisfare per essere
incluso nella distribuzione. (vedere
/usr/share/doc/debian-policy/policy.html/index.html
)
developers-reference
- la guida di riferimento per
gli sviluppatori Debian
descrive tutti gli argomenti che non
riguardano in maniera specifica i dettagli tecnici sulla pacchettizzazione,
come la struttura dell'archivio, come rinominarlo, come rendere orfano o
prendere in carico un pacchetto, come fare gli NMU, come gestire i bug, i
metodi migliori per creare pacchetti, quando e dove depositarli, ecc. (vedere
/usr/share/doc/developers-reference/index.en.html)
Autotools
Tutorial
provides very good tutorial for the GNU Build System known
as the GNU Autotools
whose most important components are Autoconf,
Automake, Libtool, and Gettext.
gnu-standards
- questo pacchetto contiene due documenti
provenienti dal progetto GNU: GNU Coding
Standards
, and Information for
Maintainers of GNU Software
. Nonostante Debian non necessiti del
loro utilizzo, sono comunque utili come linee guida e buona prassi. (vedere
/usr/share/doc/gnu-standards/standards.html
e
/usr/share/doc/gnu-standards/maintain.html
).
Se questo documento contraddice quanto scritto nel manuale delle policy Debian
e nella guida di riferimento per gli sviluppatori Debian, si considerino
corrette quest'ultime. Si prega di inviare una segnalazione di bug relativa al
pacchetto maint-guide
.
Le brevi note elencate qui sopra servono solo ad accennare lo scopo di ogni pacchetto. Prima di continuare, è opportuno leggere in modo approfondito la documentazione di ogni programma, almeno per un utilizzo di base. Può sembrare molto pesante farlo adesso, ma in seguito ci si renderà conto che sarà stato utilissimo.
Ci sono due tipi di pacchetti.
pacchetto sorgente: Un pacchetto sorgente è composto da una
serie di file che contengono codice sorgente e dati, che possono essere
compilati ed elaborati per diventare programmi e documenti formattati. Di
solito viene distribuito in una combinazione di *.orig.tar.gz
,
*.debian.tar.gz
(oppure *.diff.gz
), e
*.dsc
. Possono essere utilizzati anche altri tipi di archivio e
metodi di compressione.
pacchetto binario: Un pacchetto binario contiene il programma
già compilato e la documentazione formattata. Di solito viene distribuito come
*.deb
per i normali pacchetti Debian, e come *.udeb
per quelli del Debian Installer.
Attenzione a non confondere termini come: sorgente di un programma e pacchetto sorgente del programma!
Nel mondo Debian sono previsti diversi ruoli.
autore originale (upstream author): La persona che ha iniziato lo sviluppo del programma.
responsabile del programma (upstream maintainer): La persona che attualmente sviluppa il programma.
responsabile del pacchetto (maintainer): La persona che ha creato il pacchetto Debian del programma.
sponsor: La persona che aiuta i responsabili dei pacchetti a verificarne la correttezza dei contenuti e a depositarli nell'archivio Debian ufficiale.
mentore: La persona che aiuta i responsabili dei pacchetti alle prime armi nelle operazioni di creazione del pacchetto, ecc.
sviluppatore Debian (Debian Developer) (DD): membro del progetto Debian. Questa persona ha la possibilità di depositare i pacchetti all'interno dell'archivio Debian ufficiale.
responsabile Debian (Debian Maintainer) (DM): Questa persona con diritti limitati di accesso all'archivio ufficiale dei pacchetti di Debian.
Ci sono molti nomi di versione utilizzati in Debian.
versione originale del sorgente (upstream source version): La versione originale del sorgente è indicata con version.
Revisione Debian (Debian revision): La revisione di Debian del pacchetto è indicata con revision.
Versione del pacchetto Debian (Debian package version): La versione del pacchetto Debian è composta come segue.
version per i pacchetti binari e sorgenti nativi Debian.
version-revision per i pacchetti binari non-nativi Debian (esempio quelli di terze parti).
Se si vuole approfondire nel dettaglio la terminologia, si consiglia la lettura di altri manuali.
Non è possibile diventare uno sviluppatore Debian (DD) dal
giorno alla notte, poiché questo richiede più che delle semplici conoscenze
tecniche. Ma non ci si deve lasciare scoraggiare da questo. Se il lavoro che
si è fatto è utile a qualcun altro, si può sempre depositare il proprio
pacchetto sia come maintainer attraverso uno
sponsor che come maintainer Debian. Vedere
L'angolo del nuovo
manutentore Debian
per maggiori informazioni.
Non è necessario creare un nuovo pacchetto per diventare uno sviluppatore ufficiale Debian. Lo si può diventare anche semplicemente contribuendo alla manutenzione di pacchetti già esistenti. Ci sono molti pacchetti che aspettano solo dei bravi responsabili (vedere Scegliamo il programma, Sezione 2.1).
Before you decide to ask your question in some public place, please just RTFM.
That includes documentation in /usr/share/doc/dpkg
,
/usr/share/doc/debian
,
/usr/share/doc/autotools-dev/README.Debian.gz
,
/usr/share/doc/package/*
files and the
man
/info
pages for all the programs mentioned in this
document. See all the information at http://nm.debian.org/
.
Creare un piccolo pacchetto di test è un ottimo metodo per imparare i dettagli della pacchettizzazione. Analizzare dei pacchetti già esistenti e ben manutenuti, è invece, il metodo migliore per capire come creano i pacchetti le altre persone.
Se si ha una domanda a cui non si è trovata risposta né nella documentazione
che nelle varie risorse web, si può chiedere nella mailing list dei mentori
Debian, all'indirizzo debian-mentors@lists.debian.org
.
Degli sviluppatori Debian esperti saranno lieti di aiutarvi, ma prima di porre
una domanda è necessario leggere almeno parte della documentazione.
Vedere http://lists.debian.org/debian-mentors/
per avere più informazioni in merito alla mailing list.
Quando si ricevono delle segnalazioni di bug (sì, proprio quelle!), si dovrà
approfondire l'utilizzo del Sistema
di tracciamento dei bug di Debian
e leggere la relativa
documentazione, per essere in grado di gestire le segnalazioni in maniera
efficiente. È vivamente consigliato leggere Developer's
Reference, 5.8. 'Handling bugs'
.
Se rimangono delle domande, si può chiedere nella mailing list degli
sviluppatori Debian, all'indirizzo debian-devel@lists.debian.org
.
Vedere http://lists.debian.org/debian-devel/
per avere più informazioni a riguardo della mailing list.
Anche se tutto è andato per il meglio, è arrivato il momento di pregare. Perché? Perché in poche ore (o giorni) utenti da tutto il mondo cominceranno ad usare il vostro pacchetto, e se si è commesso qualche errore grave, la proprio email sarà inondata da messaggi di molti utenti Debian incavolati... Si scherza ovviamente. :-)
Ci si deve rilassare ed essere pronti per le segnalazioni di bug, perché c'è molto lavoro prima che un pacchetto sia completamente conforme alle policy di Debian (ancora una volta, si legga la vera documentazione per i dettagli). In bocca al lupo!
[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ successivo ]
Guida per il nuovo Maintainer
version 1.2.19, 2010-05-31 13:48:35 UTCjoy-mg@debian.org
kalos@nerdrug.org
jacopo.reggiani@gmail.com