Translation(s): English - Italiano - Português Brasileiro
Una volta che si è scaricato, modificato e compilato un pacchetto Debian, solitamente si ha voglia di continuare a farlo, dato che è così facile.
E in effetti lo è, ma anche se il Tutorial sulla compilazione è una buona introduzione alla modifica di pacchetti Debian, ci sono alcuni aspetti che sono stati tralasciati intenzionalmente, per mantenere il documento semplice. Perciò in questa pagina si possono trovare alcuni suggerimenti aggiuntivi per sfruttare a pieno alcuni dei molti strumenti Debian.
Pacchetti utili
Benché potrebbero non essere compresi nelle dipendenze di compilazione, ci sono molti pacchetti utili che chiunque sia interessato ad aiutare lo sviluppo di Debian dovrebbe avere installati:
build-essential: include i pacchetti essenziali per la compilazione di pacchetti propri; questo probabilmente è già installato nel sistema, ma è sempre meglio controllare.
devscripts: molti script utili per lo sviluppo in Debian (inclusi: dch, debuild, uscan, uupdate e molti altri).
lintian: controllore per i pacchetti che verifica che il pacchetto creato sia buono per ciò che riguarda la Debian Policy.
diff, patch, patchutils e quilt: utilità per lavorare con le patch.
git, dgit: utilità per lavorare con pacchetti in git
Ed ecco una utile riga di comando, per fare copia e incolla:
apt install build-essential devscripts lintian diffutils patch patchutils quilt git dgit
Usare il file changelog
Il file debian/changelog è uno dei file importanti della directory debian. Come esempio, si prenda una voce nel changelog:
control-center (1:2.8.1-3) unstable; urgency=low * debian/rules: - Corrected erroneous line responsible for not including the .desktop files (Closes: #274401) * debian/patches: - Suppressed 'Text Editor' in the "preferred applications" as it's useless with the new mime type system. -- Arnaud Patard <arnaud.patard@rtp-net.org> Thu, 25 Nov 2004 21:16:04 +0100
Ci sono molte cose degne di attenzione in questa voce: nella prima riga ci sono nome e versione del pacchetto sorgente e inoltre la distribuzione in cui è stato originariamente caricato (unstable) e il livello di urgenza (urgency) che è usato dai bot Debian per determinare quando il pacchetto è pronto ad entrare in testing.
Poi c'è un elenco puntato con i file che sono stati modificati e un riassunto molto breve dei motivi del cambiamento. Notare la parte 274401: viene usata dal bot che si occupa dei bug Debian per chiudere automaticamente i bug.
Da ultimo si può vedere il nome e l'indirizzo di posta elettronica dell'ultima persone che ha modificato il pacchetto e la data di modifica.
Ora, per modificare il changelog, se si è installato devscripts, si ha un bel comando dch che riempie automaticamente molte di queste informazioni e apre l'editor preferito dell'utente. Benché si possa modificare tutto a mano se lo si desidera, l'uso di dch è raccomandato.
Importante: quando si inizia a modificare un pacchetto, è bene crearne una nuova versione così da poterla distinguere da quella originale. Perciò la prima volta che si sta per modificare una voce di changelog si dovrebbe usare
dch -i
Questo aggiunge una voce totalmente nuova incrementando il numero di versione e permette di scrivere quali file sono stati modificati. Dopo di ciò si possono sempre aggiungere ulteriori informazioni sui propri cambiamenti usando semplicemente dch.
Compilare il pacchetto sorgente
Quando si esegue debian/rules binary si compila semplicemente il pacchetto binario, quello da installare sul proprio sistema. In molti casi, però, si desidera creare anche il pacchetto sorgente (che è in realtà composto da tre file: pacchetto_versione.orig.tar.gz, pacchetto_versione.diff.gz e pacchetto_versione.dsc).
Per farlo ci sono molti strumenti. Qui viene usato dpkg-buildpackage che è fornito nel pacchetto dpkg-dev (che fa parte di build-essential).
Ipotizzando di aver già modificato il pacchetto e il suo changelog, lo si compila usando:
dpkg-buildpackage -rfakeroot
(Ci sono molte opzioni che possono essere passate a dpkg-buildpackage; -S per esempio, crea solo il pacchetto sorgente, -tc pulisce i file compilati una volta creato il pacchetto, ecc. Per maggiori informazioni, vedere man dpkg-buildpackage.)
Una volta fatto questo, nella directory principale ci sono 3 nuovi file che avranno quasi lo stesso nome di quelli che sono stati scaricati, ma con il numero di versione cambiato.
Usare interdiff
Se si è compilato un pacchetto, incrementando il numero di versione nel file changelog, e si hanno così due insiemi di tre file (due pacchetti sorgente), si può stabilire quali siano stati i cambiamenti tra le due versioni molto facilmente usando interdiff:
interdiff -z pacchetto_vecchiaversione.diff.gz pacchetto_nuovaversione.diff.gz > mia.patch
Dopo aver eseguito questo comando, si può ispezionare il contenuto del file mia.patch; dovrebbe contenere tutto ciò che è stato modificato nel pacchetto. Se si sta risolvendo un bug nel BTS Debian, questo è ciò che deve essere inviato al numero di bug corrispondente.
Notare che interdiff ha senso solo quando non sono stati cambiati i sorgenti originari, vale a dire che pacchetto_versione.orig.tar.gz deve essere lo stesso).
Usare lintian
Non tutti i pacchetti Debian sono perfettamente aderenti alle politiche Debian. A volte questo è dovuto semplicemente al fatto che le politiche sono aggiornate velocemente, a volte è dovuto alla mancanza di tempo da parte del manutentore e a volte perché non è facile per un certo tipo di software essere perfettamente in regola.
In ogni caso, questi strumenti forniscono un metodo semplice per trovare i problemi nei pacchetti Debian. Usarli è facile: li si esegue semplicemente passando i file .diff.gz e .dsc del proprio pacchetto sorgente.
A seconda del pacchetto, si può non ottenere alcun messaggio, ottenerne alcuni oppure molti. Questi messaggi solitamente sono brevi e non sempre si saprà cosa significano, ma molte volte indicano quale è la parte problematica del pacchetto.
Questi strumenti sono, naturalmente, solo un aiuto e non sostituiscono la "reale lettura" della politica Debian.
Ottenere aiuto
Se ci si trova bloccati, ci sono molti posti in cui è possibile ottenere aiuto.
Si può andare nell'Angolo dei Debian Developer dove si possono trovare moltissime informazioni in linea.
Si può chiedere online su irc.debian.org (OFTC), in #debian-women, #debian-mentors, #debian-bugs o #debian-devel (scegliere quello che è più vicino a ciò che si sta facendo).
Oppure si può chiedere in una delle molteMailing-list Debian.