SINTASSI
controlDESCRIZIONE
Ogni pacchetto Debian contiene il file principale «control» che contiene un certo numero di campi oppure di commenti quando la riga inizia con «#». Ogni campo inizia con un'etichetta, quale Package o Version (le maiuscole e minuscole non fanno differenza), seguita da due punti («:») e dal corpo del campo. I campi sono delimitati solo dalle etichette di campo. In altre parole, il testo del campo può essere lungo diverse righe, ma gli strumenti di installazione generalmente uniscono le righe quando elaborano il corpo del campo (eccetto nel caso del campo Description, vedere in seguito).CAMPI OBBLIGATORI
- Package: nome pacchetto
- Il valore di questo campo determina il nome del pacchetto e viene usato dalla maggior parte degli strumenti di installazione per generare i nomi dei file.
- Version: stringa-versione
- Tipicamente, questo è il numero di versione originale del pacchetto in qualsiasi forma usata dall'autore del programma. Può anche includere un numero di revisione Debian (per i pacchetti non nativi). Il formato e l'algoritmo di ordinamento esatti sono descritti in deb-version(5).
- Maintainer: nomecompleto-email
- Dovrebbe essere nel formato «Tizio Caio <[email protected]>» ed è tipicamente la persona che ha creato il pacchetto, piuttosto che l'autore del software che è stato impacchettato.
- Description: descrizione-breve
-
descrizione-lunga
Il formato per la descrizione del pacchetto prevede un breve riassunto nella prima riga (dopo il campo «Description»). Le righe seguenti dovrebbero essere usate per una descrizione più lunga e dettagliata. Ogni riga della descrizione lunga deve essere preceduta da uno spazio e le righe vuote nella descrizione lunga devono contenere un unico «.» che segue lo spazio precedente.
CAMPI OPZIONALI
- 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.
- Essential: yes|no
- Questo campo è solitamente necessario solamente quando la risposta è yes. Denota un pacchetto che è richiesto per il corretto funzionamento del sistema. dpkg o qualsiasi altro strumento di installazione non permetterà che un pacchetto Essential venga rimosso (almeno non senza usare una delle opzioni di forzatura).
- Architecture: arch|all
- L'architettura specifica per quale tipo di hardware è stato compilato questo pacchetto. Architetture comuni sono: «i386», «m68k», «sparc», «alpha», «powerpc», ecc. Notare che l'opzione all è pensata per pacchetti che sono indipendenti dall'architettura. Alcuni esempi di questi pacchetti sono gli script di shell o Perl e la documentazione.
- Origin: nome
- Il nome della distribuzione da cui ha origine questo pacchetto.
- 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.
- Homepage: url
- L'url della home page del progetto originale.
- Tag: elenco-etichette
- Elenco di etichette che descrivono le qualità del pacchetto. La descrizione e l'elenco delle etichette supportate possono essere trovati nel pacchetto debtags.
- Multi-Arch: same|foreign|allowed
- Questo campo viene usato per indicare come questo pacchetto dovrebbe comportarsi nelle installazioni multi-arch. Il valore same significa che il pacchetto è co-installabile insieme a sé stesso, ma non deve essere usato per soddisfare le dipendenze di un qualsiasi pacchetto di un'architettura diversa dalla propria. Il valore foreign significa che il pacchetto non è co-installabile insieme a sé stesso, ma può soddisfare le dipendenze di un pacchetto di un'architettura diversa dalla propria. Il valore allowed permette alle dipendenze inverse di indicare nel loro campo Depends di accettare un pacchetto da un'architettura diversa, ma non ha altri effetti.
- Source: nome-sorgente
-
Il nome del pacchetto sorgente da cui deriva questo pacchetto binario, se è
differente rispetto al nome del pacchetto stesso.
- 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.
- Depends: elenco-pacchetti
- Elenco di pacchetti che sono richiesti da questo pacchetto per fornire una quantità non banale di funzionalità. Il software di manutenzione dei pacchetti non permetterà l'installazione di un pacchetto se non sono installati quelli elencati nel suo campo Depends, almeno non senza usare le opzioni di forzatura. Durante un'installazione gli script postinst dei pacchetti elencati nei campi Depends: sono eseguiti prima di quelli dei pacchetti che dipendono da essi. Al contrario, durante una rimozione, lo script prerm di un pacchetto viene eseguito prima di quelli dei pacchetti elencati nel suo campo Depends.
- Pre-Depends: elenco-pacchetti
- Elenco di pacchetti che devono essere installati e configurati prima che questo pacchetto possa essere installato. È usato generalmente nel caso in cui questo pacchetto richieda un altro pacchetto per l'esecuzione del suo script preinst.
- Recommends: elenco-pacchetti
- Elenca i pacchetti che dovrebbero essere presenti insieme a questo in tutte le installazioni tranne quelle più particolari. Il software di manutenzione dei pacchetti avvisa l'utente se cerca di installare un pacchetto senza quelli elencati nel suo campo Recommends.
- Suggests: elenco-pacchetti
- Elenca i pacchetti che sono correlati con questo e che forse ne aumentano l'utilità, ma senza i quali l'installazione del pacchetto è perfettamente ragionevole.
La sintassi dei campi Depends, Pre-Depends, Recommends e Suggests è 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.
Un numero di versione può iniziare con un «>>», nel qual caso qualsiasi versione successiva soddisferà la condizione, e può specificare o omettere il numero di revisione del pacchetto Debian (separato da un trattino). Le relazioni tra le versioni accettate sono «>>» per maggiore di, «<<» per minore di, «>=» per maggiore o uguale a, «<=» per minore o uguale a e «=» per uguale a.
- Breaks: elenco-pacchetti
- Elenca i pacchetti che vengono resi difettosi da questo, per esempio portando alla luce bug quando essi fanno affidamento su questo. Il software di manutenzione dei pacchetti non permette di configurare pacchetti difettosi; generalmente la soluzione è di aggiornare i pacchetti elencati in un campo Breaks.
- Conflicts: elenco-pacchetti
- Elenca i pacchetti che vanno in conflitto con questo, per esempio perché contengono file con nomi identici. Il software di gestione dei pacchetti non permette di avere pacchetti in conflitto installati contemporaneamente. Due pacchetti che vanno in conflitto dovrebbero entrambi includere una riga Conflicts che indica l'altro.
- Replaces: elenco-pacchetti
- Elenco di file di pacchetti che questo rimpiazza. È usato per permettere a questo pacchetto di sovrascrivere i file di un altro pacchetto, ed è solitamente usato con il campo Conflicts per forzare la rimozione dell'altro pacchetto se questo ha anche gli stessi file di quello in conflitto.
- Provides: elenco-pacchetti
- Questo è un elenco di pacchetti virtuali forniti da questo pacchetto. Solitamente viene usato nel caso in cui svariati pacchetti forniscano tutti lo stesso servizio. Per esempio, sendmail ed exim possono fare da server di posta e perciò forniscono un pacchetto comune («mail-transport-agent») dal quale possono dipendere altri pacchetti. Ciò permette a sendmail o exim di essere un'opzione valida per soddisfare la dipendenza; inoltre così non è necessario che i pacchetti che dipendono da un server di posta sappiano i nomi di tutti i pacchetti che ne contengono uno e che li elenchino separandoli con «|».
La sintassi di Breaks, Conflicts, Replaces e Provides è un elenco di nomi di pacchetto, separati da virgole (e opzionalmente spazi bianchi). Nei campi Breaks e Conflicts, la virgola deve essere letta come «OR». Per i campi Breaks, Conflicts e Replaces, può anche essere specificata una versione opzionale con la stessa sintassi descritta sopra.
- Built-Using: elenco-pacchetti
- Questo campo elenca pacchetti sorgente extra che sono stati usati durante la compilazione di questo pacchetto binario. È un'indicazione per il software di manutenzione degli archivi che questi pacchetti sorgente aggiuntivi devono essere conservati fintanto che questo pacchetto binario è mantenuto. Questo campo deve essere un elenco di nomi di pacchetti sorgente con una relazione di versione stringente (=). Notare che è probabile che il software di manutenzione degli archivi rifiuti di accettare il caricamento di un pacchetto che dichiara una relazione Built-Using che non può essere soddisfatta dall'archivio.
ESEMPIO
# Commento Package: grep Essential: yes Priority: required Section: base Maintainer: Wichert Akkerman <[email protected]> Architecture: sparc Version: 2.4-1 Pre-Depends: libc6 (>= 2.0.105) Provides: rgrep Conflicts: rgrep Description: GNU grep, egrep and fgrep. The GNU family of grep utilities may be the "fastest grep in the west". GNU grep is based on a fast lazy-state deterministic matcher (about twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper search for a fixed string that eliminates impossible text from being considered by the full regexp matcher without necessarily having to look at every character. The result is typically many times faster than Unix grep or egrep. (Regular expressions containing backreferencing will run more slowly, however).