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:

Ed ecco una utile riga di comando, per fare copia e incolla:

  apt-get install build-essential devscripts lintian diff patch patchutils

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.