SINTASSI
controlDESCRIZIONE
Ogni pacchetto sorgente Debian contiene il file «control» principale che contiene almeno 2 paragrafi, separati da una riga vuota. Il primo paragrafo elenca tutte le informazioni sul pacchetto sorgente in generale, mentre ciascun paragrafo seguente descrive esattamente un pacchetto binario. Ogni paragrafo consiste di almeno un campo. Un campo inizia con un nome di campo, come Package o Section (le maiuscole e minuscole non hanno importanza), seguito da due punti («:»), il corpo del campo e un ritorno a capo. Sono permessi anche campi con più righe, ma ogni riga aggiuntiva senza un nome di campo deve iniziare con almeno uno spazio. Il contenuto dei campi multi riga viene generalmente riunito in un'unica riga dagli strumenti (tranne nel caso del campo Description, come descritto in seguito). Per inserire righe vuote in un campo composto da più righe, inserire un punto dopo lo spazio. Le righe che iniziano con un «#» sono considerate commenti.CAMPI DEL SORGENTE
- Source: nome-pacchetto-sorgente (richiesto)
-
Il valore di questo campo è il nome del pacchetto sorgente e deve
corrispondere al nome del pacchetto sorgente nel file debian/changelog. Un
nome di pacchetto è formato soltanto da lettere minuscole (a-z), cifre
(0-9), segni più (+) e meno (-) e punti (.). I nomi di pacchetto devono
essere lunghi almeno due caratteri e devono iniziare con un carattere
alfanumerico.
- Maintainer: nomecompleto-email (richiesto)
-
Dovrebbe essere nel formato «Tizio Caio <[email protected]>» e si
riferisce alla persona che attualmente mantiene il pacchetto, piuttosto che
all'autore del software o al creatore originale del pacchetto.
- Uploaders: nomecompleto-email
-
Elenca tutti i nomi ed indirizzi di posta elettronica dei co-manutentori del
pacchetto, nello stesso formato del campo Maintainer. Più manutentori devono
essere separati da una virgola.
- Standards-Version: stringa-versione
-
Questo indica la più recente versione degli standard (che consistono nel
manuale Debian Policy e dei testi a cui esso fa riferimento, nel pacchetto
debian-policy) a cui è conforme questo pacchetto.
- DM-Upload-Allowed: yes|no
-
Questo campo indica se un pacchetto può essere caricato dai Debian
Maintainer che sono presenti nel campo Maintainer o Uploader. Il valore
predefinito è «no».
- Homepage: url
-
L'URL della home page del progetto originale.
- Bugs: url
-
L'url per questo pacchetto nel sistema di tracciamento dei bug. Il
formato attualmente utilizzato è tipo-bts://indirizzo-bts, come in
debbugs://bugs.debian.org. Questo campo solitamente non è necessario.
- Vcs-*: url
-
L'url del repository del sistema di controllo di versione usato per
manutenere questo pacchetto. Attualmente sono supportati Arch, Bzr
(Bazaar), Cvs, Darcs, Git, Hg (Mercurial), Mtn (Monotone) e
Svn (Subversion). Solitamente questo campo punta alla versione più
recente del pacchetto, ad esempio al ramo principale o al tronco.
- Vcs-Browser: url
-
L'url di un'interfaccia web per navigare nel repository del sistema di
controllo di versione.
- Origin: nome
-
Il nome della distribuzione da cui ha origine questo pacchetto. Questo campo
solitamente non è necessario.
- Section: sezione
-
Questo è un campo generico che assegna al pacchetto una categoria in base al
software che esso installa. Alcune sezioni comuni sono: «utils», «net»,
«mail», «text», «x11», ecc.
- Priority: priorità
-
Imposta l'importanza di questo pacchetto in relazione all'intero
sistema. Priorità comuni sono: «required», «standard», «optional», «extra»,
ecc.
In Debian, i campi Section e Priority hanno un insieme definito di valori accettati in base al manuale Debian Policy. È possibile ottenere un elenco di tali valori dalla versione più recente del pacchetto debian-policy.
- Build-Depends: elenco-pacchetti
-
Un elenco di pacchetti che devono essere installati e configurati per poter
compilare il pacchetto sorgente. Includere una dipendenza in questo elenco
ha lo stesso effetto di includerla in entrambi Build-Depends-Arch e
Build-Depends-Indep, con l'effetto aggiuntivo di essere usata per la
creazione di archivi solo-sorgenti.
- Build-Depends-Arch: elenco-pacchetti
-
Come Build-Depends, ma sono necessari solamente quando si compilano i
pacchetti dipendenti dall'architettura. In questo caso vengono installati
anche i Build-Depends. Questo campo è stato introdotto nella versione
1.16.4 di dpkg; per poter compilare con versioni più vecchie di dpkg, deve
essere invece usato Build-Depends.
- Build-Depends-Indep: elenco-pacchetti
-
Come Build-Depends, ma sono necessari solamente quando si compilano i
pacchetti indipendenti dall'architettura. In questo caso vengono installati
anche i Build-Depends.
- Build-Conflicts: elenco-pacchetti
-
Un elenco di pacchetti che non devono essere installati quando il pacchetto
è compilato, ad esempio perché interferiscono con il sistema di compilazione
usato. Includere una dipendenza in questo elenco ha lo stesso effetto di
includerla sia in Build-Conflicts-Arch sia in Build-Conflicts-Indep,
con l'effetto aggiuntivo di essere usata per le compilazioni solo-sorgente.
- Build-Conflicts-Arch: elenco-pacchetti
-
Come Build-Conflicts, ma solo quando si compilano i pacchetti dipendenti
dall'architettura. Questo campo è stato introdotto nella versione 1.16.4 di
dpkg; per poter compilare con versioni più vecchie di dpkg, deve essere
invece usato Build-Conflicts.
- Build-Conflicts-Indep: elenco-pacchetti
-
Come Build-Conflicts, ma solo quando si compilano i pacchetti
indipendenti dall'architettura.
La sintassi dei campi Build-Depends, Build-Depends-Arch e Build-Depends-Indep è un elenco di gruppi di pacchetti alternativi. Ogni gruppo è un elenco di pacchetti separati da una barra verticale (o «pipe»): «|». I gruppi sono separati da virgole. Le virgole devono essere lette come «AND» e le pipe come «OR», con le pipe che hanno la precedenza. Ogni nome di pacchetto è seguito opzionalmente da un numero di versione specificato tra parentesi e da un'architettura specificata tra parentesi quadre.
La sintassi dei campi Build-Conflicts, Build-Conflicts-Arch e Build-Conflicts-Indep è un elenco di gruppi di pacchetti separati da virgole, dove la virgola viene letta come un «AND». Non è supportato specificare pacchetti alternativi usando una «pipe». Ogni nome di pacchetto è seguito opzionalmente da un numero di versione specificato tra parentesi e da un'architettura specificata tra parentesi quadre.
Un numero di versione può iniziare con «>>», nel qual caso corrisponde ad ogni versione successiva e può specificare o meno la revisione Debian del pacchetto (separata da un trattino). Le relazioni accettate per le versioni sono «>>» per maggiore di, «<<» per minore di, «>=» per maggiore o uguale a, «<=» per minore o uguale a e «=» per uguale a.
L'indicazione di un'architettura è formata da uno o più nomi di architettura, separati da spazi bianchi. Ciascun nome può essere fatto precedere da un punto esclamativo col significato di «NOT».
Notare che le dipendenze dai pacchetti nell'insieme build-essential possono essere omesse e che dichiarare conflitti di compilazione con essi è impossibile. Un elenco di tali pacchetti è nel pacchetto build-essential.
CAMPI BINARI
Notare che i campi Priority, Section e Homepage possono anche essere in un paragrafo di un binario per sovrascrivere il valore globale del pacchetto sorgente.
- Package: nome-pacchetto-binario (richiesto)
-
Questo campo viene usato per indicare il nome del pacchetto binario. Valgono
le stesse restrizioni usate per i nomi dei pacchetti sorgenti.
- Architecture: arch|all|any (richiesto)
-
L'architettura specifica su quale tipo di hardware funziona questo
pacchetto. Per i pacchetti che funzionano su tutte le architetture, usare il
valore any. Per i pacchetti che sono indipendenti dall'architettura, come
gli script Perl e di shell o la documentazione, usare il valore all. Per
limitare i pacchetti ad un determinato insieme di architetture, specificare
i nomi delle architetture, separate da uno spazio. In tale elenco è anche
possibile usare caratteri jolly per le architetture (per maggiori
informazioni vedere dpkg-architecture(1)).
- Package-Type: deb|udeb
-
Questo campo definisce il tipo di pacchetto. «udeb» è per pacchetti di
dimensioni limitate usati dall'installatore debian. «deb» è il valore
predefinito che viene usato se il campo non è presente. Ulteriori tipi
potrebbero essere aggiunti in futuro.
- Subarchitecture: valore
- Kernel-Version: valore
-
Installer-Menu-Item: valore
Questi campi sono usati dall'installatore Debian e non sono solitamente
necessari. Per maggiori dettagli su di essi, guardare il file
/usr/share/doc/debian-installer/devel/modules.txt nel pacchetto
debian-installer.
- Essential: yes|no
- Multi-Arch: same|foreign|allowed
- Tag: elenco-etichette
-
Description: descrizione-breve (richiesto)
Questi campi sono descritti nella pagina di manuale deb-control(5), dato
che sono copiati in modo letterale nel file di controllo del pacchetto
binario.
- Depends: elenco-pacchetti
- Pre-Depends: elenco-pacchetti
- Recommends: elenco-pacchetti
- Suggests: elenco-pacchetti
- Breaks: elenco-pacchetti
- Enhances: elenco-pacchetti
- Replaces: elenco-pacchetti
- Conflicts: elenco-pacchetti
- Provides: elenco-pacchetti
-
Built-Using: elenco-pacchetti
Questi campi dichiarano relazioni tra i pacchetti. Sono descritti nella pagina di manuale deb-control(5) e nel pacchetto debian-policy.
CAMPI DEFINITI DALL'UTENTE
È permesso aggiungere al file control campi addizionali definiti dall'utente che saranno ignorati dagli strumenti. Se si desidera che i campi vengano copiati nei file di output, come ad esempio i pacchetti binari, è necessario usare uno schema dei nomi personalizzato: i campi devono iniziare con una lettera X, seguita da una o più tra le lettere BCS e un trattino. Se viene usata la lettera B, il campo sarà presente nel file di controllo del pacchetto binario, vedere deb-control(5); se è usata la lettera S sarà nel file di controllo del pacchetto sorgente come creato da dpkg-source(1); nel caso della lettera C nel file di controllo del caricamento (.changes). Notare che i prefissi X[BCS]- vengono rimossi quando i campi sono copiati nei file di output. Un campo XC-Approved-By apparirà come Approved-By nel file changes e non sarà presente nel file di controllo del pacchetto binario o di quello sorgente.Tenere a mente che questi campi definiti dall'utente useranno lo spazio dei nomi globale, che potrebbe in futuro andare in conflitto con i campi ufficialmente riconosciuti. Per evitare una potenziale situazione di questo tipo, si possono far iniziare questi campi con Private-, come in XB-Private-Nuovo-Campo; l'effetto collaterale è che dpkg-deb non avvertirà della loro presenza come campi sconosciuti.
ESEMPIO
# Commento Source: dpkg Section: admin Priority: required Maintainer: Dpkg Developers <[email protected]> # questo campo viene copiato nei pacchetti binario e sorgente XBS-Upstream-Release-Status: stable Homepage: http://wiki.debian.org/Teams/Dpkg Vcs-Browser: http://git.debian.org/?p=dpkg/dpkg.git Vcs-Git: git://git.debian.org/git/dpkg/dpkg.git Standards-Version: 3.7.3 Build-Depends: pkg-config, debhelper (>= 4.1.81), libselinux1-dev (>= 1.28-4) [!linux-any] Package: dpkg-dev Section: utils Priority: optional Architecture: all # questo è un campo personalizzato nel pacchetto binario XB-Mentoring-Contact: Raphael Hertzog <[email protected]> Depends: dpkg (>= 1.14.6), perl5, perl-modules, cpio (>= 2.4.2-2), bzip2, lzma, patch (>= 2.2-1), make, binutils, libtimedate-perl Recommends: gcc | c-compiler, build-essential Suggests: gnupg, debian-keyring Conflicts: dpkg-cross (<< 2.0.0), devscripts (<< 2.10.26) Replaces: manpages-pl (<= 20051117-1) Description: Debian package development tools This package provides the development tools (including dpkg-source) required to unpack, build and upload Debian source packages. . Most Debian source packages will require additional tools to build; for example, most packages need make and the C compiler gcc.