## Errori comuni

### File di esempio di dh_make

Usando dh_make per creare la "debianizzazione" iniziale, vengono creati alcuni file di esempio per svariate procedure nella directory `debian/`. I modelli hanno l'estensione .ex. Se vuoi usarli, rinominali rimuovendo l'estensione. Se non ne hai bisogno, rimuovili per mantenere pulita la directory `debian/`.

### Modificare l'archivio originale

There are two types of source packages, native and non-native. A native package is one that is specific to Ubuntu/Debian. It has the debian/ directory containing the packaging information and any changes to the source included in the tarball (usually <packagename>_<version>.tar.gz). Non-native packages are more common. A non-native package splits the source package into a <packagename>_<version>.orig.tar.gz tarball that is identical (hopefully including md5sum) to the source tarball downloaded from the project's homepage and a .diff.gz file that contains all the differences (`debian/` directory and patches) from the original source tarball.

Ecco un elenco di potenziali problemi che possono succedere cambiando il pacchetto sorgente originale:

1. Riproducibilità

   Se prendi semplicemente i file .diff.gz e .dsc, tu o qualcun altro non ha modo di riprodurre le modifiche nell'archivio originale.

2. Aggiornabilità

   It is much easier to upgrade to a new upstream (from the author) version if the .orig.tar.gz is preserved and there is a clear separation between the upstream source and the changes made to produce the Ubuntu source package.

3. Debian to Ubuntu Synchronization

   Changing original tarballs makes it hard to automatically sync from Debian to Ubuntu. Normally, only the .diff.gz and .dsc files change within the same upstream version, since the .orig.tar.gz file is shared by all the Debian or Ubuntu revisions. It is much more difficult to sync if the md5sums of the .orig.tar.gz files are not the same.

4. Uso di controlli di revisione per i pacchetti Debian

   Se usi svn (svn-buildpackage) per gestire il tuo pacchetto Debian, di solito non conservi all'interno l'archivio originale. Se qualcuno effettua un checkout, avrà bisogno di scaricare l'archivio originale separatamente. Altri sistemi di controllo di revisione possono essere utilizzati per tener traccia dei file di pacchettizzazione (`debian/`, etc.) e non l'intero sorgente. Però, se il file .orig.tar.gz non è lo stesso, possono ovviamente generararsi dei problemi.

5. Gestione della sicurezza

   Considera una situazione in cui qualcuno vuole introdurre una backdoor/rootkin o altre componenti maligne. Se l'archivio originale è intatto, può essere analizzato facilmente attraverso il file .diff.gz per vedere se la persona che ha modificato il pacchetto ha tentato di fare qualcosa di male. Se l'archivio è stato modificato, però, dovrai controllare anche le differenze tra il pacchetto distribuito e quello originale.

   Devi tuttora fidarti del fatto che gli autori del software non abbiano fatto nulla di male, ma è la norma sia che l'archivio originale sia stato cambiato o meno.

6. Il file .diff.gz

   L'opzione di usare il .diff.gz per riflettere le modifiche apportate al sorgente originario esiste già, in questo modo è semplice effettuare modifiche senza toccare l'archivio originale.

E' ammissible modificare l'archivio originale se una o più di queste cause sono vere:

- Contiene componenti non libere che non possono essere ridistribuite. Rimuovi queste componenti e segnalalo nella pacchettizzazione. Spesso tali pacchetti usano "dfsg" (acronimo di Debian Free Software Guidelines) nel nome del pacchetto o nel numero di versione per indicare che le componenti non libere sono state rimosse.

- Gli autori forniscono solo archivi in formato bzip2

  - Usa semplicemente bunzip2 sul .tar.bz2 e usa gzip -9 sul risultante file tar.

  - Gli hash MD5 del .tar che fornisci e di quelli del .tar originale devono coincidere!

  - Eventualmente puoi inserire una regola get-orig-source in debian/rules che faccia la conversione automaticamente.

- Importazione diretta da SVN

  - Inserisci una regola get-orig-source in debian/rules

Seguono le non ragioni per modificare l'archivio originale:

- Errata struttura della directory

  dpkg-source è abbastanza flessibile e si occupa di produrre la struttura corretta anche se: La directory all'interno dell'archivio non è nel formato <upstream>-<versione>. Non ci sono sottodirectory all'interno dell'archivio

- I file devono essere rimossi per mantenere pulito il .diff.gz (p.e. i file creati da autotools). Qualsiasi cosa necessiti di essere cancellato dovrebbe essere rimosso nella regola clean. Dato che il .diff.gz è creato usando diff -u, non vedrai i file rimossi nel .diff.gz.

- I file devono essere modificati. I file che devono essere modificati dovrebbero andare nel .diff.gz. Quello è il suo scopo!

- Permessi dei file sbagliati. Puoi usare `debian/rules` per correggerli.

Cosa fare con un file .orig.tar.gz che contiene già la directory `debian/`? Non ripacchettizzarlo. Puoi chiedere all'autore di cancellare la directory debian/ e fornire invece un .diff.gz. Questo rende più facile analizzare il loro lavoro e separa la pacchettizzazione dai sorgenti del programma.

E' sempre una buona idea contattare l'autore del programma e chiedere se puoi correggere alcune impostazioni di autoconf, la struttura delle directory, un indirizzo obsoleto della Free Software Foundation nei file COPYRIGHT e altre cose non direttamente correlate alla pacchettizzazione ma che sarebbe utile in modo da non creare patch al sorgente nel .diff.gz

### Informazioni sul Copyright

Il file `debian/copyright` dovrebbe contenere:

- Le informazioni di licenza per tutti i file sorgente. A volte gli autori inseriscono una licenza nel file `COPYING` ma esistono differenti licenze per alcuni file nei sorgenti.

- L'anno e i detentori del copyright

- L'intera licenza a meno che non sia una di quelle reperibili in `/usr/share/common-licenses`, in qual caso dovresti semplicemente includerne il preambolo.

Creazione dei pacchetti con CDBS |  | Capitolo 4. Sistemi di patching