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/
.
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:
Riproducibilità
Se prendi semplicemente i file .diff.gz e .dsc, tu o qualcun altro non ha modo di riprodurre le modifiche nell'archivio originale.
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.
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.
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.
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. |
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:
|
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 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 |
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.