[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ successivo ]
I pacchetti generalmente contengono tutti quei file necessari a implementare una serie di comandi o funzionalità. Ci sono due tipi di pacchetti Debian:
Pacchetti binari, che contengono eseguibili, file di configurazione, pagine man/info, informazioni sul copyright ed altra documentazione. Questi pacchetti sono distribuiti in un formato archivio specifico di Debian (si veda Qual è il formato di un pacchetto binario Debian?, Sezione 6.2); sono solitamente caratterizzati dall'estensione '.deb'. I pacchetti binari possono essere spacchettati usando l'utilità Debian dpkg; i dettagli vengono forniti nella sua pagina di manuale.
Pacchetti sorgente, che consistono in un file .dsc che descrive il pacchetto sorgente (inclusi i nomi dei file seguenti), un file .orig.tar.gz che contiene il sorgente originale non modificato nel formato tar compresso con gzip e solitamente un file .diff.gz che contiene le modifiche specifiche di Debian fatte al sorgente originale. L'utilità dpkg-source pacchetta e spacchetta gli archivi sorgente Debian; i dettagli vengono forniti nella sua pagina di manuale.
L'installazione di software attraverso il sistema dei pacchetti usa
"dipendenze" che vengono progettate con cura dai manutentori dei
pacchetti. Queste dipendenze sono documentate nel file control
associato ad ogni pacchetto. Per esempio, il pacchetto contenente il
compilatore C della GNU (gcc
) "dipende" dal pacchetto
binutils
che include il linker e l'assemblatore. Se un utente
tentasse di installare gcc
senza avere prima installato
binutils
, il sistema di gestione dei pacchetti (dpkg) invierà un
messaggio di errore avvertendo che necessita anche di binutils
, e
fermerà l'installazione di gcc
. (Comunque, questa funzione può
essere superata dall'utente tenace, si veda dpkg(8)
.) Si veda di
più su Cosa significa dire che un pacchetto
Dipende da, Raccomanda, Suggerisce, Va in
conflitto con, Sostituisce o Fornisce un altro
pacchetto?, Sezione 6.9 sotto.
Gli strumenti Debian per la gestione dei pacchetti possono essere usati per:
manipolare e gestire pacchetti o parti di pacchetti,
aiutare l'utente nella divisione di pacchetti che devono essere trasmessi attraverso mezzi di dimensioni limitate come i floppy disk,
aiutare gli sviluppatori nella costruzione degli archivi dei pacchetti e
aiutare gli utenti nell'installazione di pacchetti residenti su un sito FTP remoto.
Un "pacchetto" Debian, od un file archivio Debian, contiene i file eseguibili, le librerie e la documentazione associati ad un gruppo o suite di programmi correlati. Normalmente, un file archivio Debian ha un nome che termina in .deb.
L'interno di questi pacchetti binari Debian è descritto nella pagina di manuale
deb(5)
. Questo formato interno è soggetto a modifiche (tra una
release maggiore di Debian GNU/Linux), quindi per favore si usi sempre
dpkg-deb(1)
per manipolare file .deb.
Il nome dei pacchetti binari Debian è conforme alla seguente convenzione: <foo>_<NumeroVersione>-<NumeroRevisioneDebian>.deb
Si noti che si suppone che foo sia il nome del pacchetto. Come verifica, si può conoscere il nome del pacchetto associato ad un particolare archivio Debian (file.deb) in uno di questi modi:
esaminando il file "Packages" nella directory dove era stato archiviato su un archivio FTP Debian. Questo file contiene una sezione che descrive ogni pacchetto; il primo campo in ogni sezione è il nome formale del pacchetto.
utilizzando il comando dpkg --info foo_VVV-RRR.deb (dove VVV e RRR sono rispettivamente la versione e la revisione del pacchetto in questione). Questo mostra, tra le altre cose, il nome del pacchetto corrispondente al file archivio spacchettato.
La componente VVV è il numero di versione specificato dallo sviluppatore. Non ci sono standard qui, per cui il numero di versione può avere formati differenti come "19990513" e "1.3.8pre1".
La componente RRR è il numero di revisione Debian e viene specificata dallo sviluppatore Debian (o un singolo utente se sceglie di costruirsi il pacchetto da sé). Questo numero corrisponde al livello di revisione del pacchetto Debian, quindi un nuovo livello di revisione significa solitamente modifiche nel Makefile Debian (debian/rules), nel file di controllo Debian (debian/control), negli script di installazione o rimozione (debian/p*) oppure nei file di configurazione utilizzati con il pacchetto.
Le specifiche riguardanti il contenuto di un file di controllo Debian sono fornite nel "Debian Packaging manual", capitolo 4, si veda Quale altra documentazione esiste su e per un sistema Debian?, Sezione 11.1.
Brevemente, un esempio di file di controllo è mostrato di seguito per il pacchetto Debian hello:
Package: hello Priority: optional Section: devel Installed-Size: 45 Maintainer: Adam Heath <doogie@debian.org> Architecture: i386 Version: 1.3-16 Depends: libc6 (>= 2.1) Description: The classic greeting, and a good example The GNU hello program produces a familiar, friendly greeting. It allows nonprogrammers to use a classic computer science tool which would otherwise be unavailable to them. . Seriously, though: this is an example of how to do a Debian package. It is the Debian version of the GNU Project's `hello world' program (which is itself an example for the GNU Project).
Il campo Package fornisce il nome del pacchetto. Questo è il nome attraverso il quale il pacchetto può essere manipolato con gli strumenti dei pacchetti ed è solitamente simile ma non necessariamente lo stesso rispetto alla prima componente della stringa nel nome dell'archivio Debian.
Il campo Version fornisce sia il numero della versione dello sviluppatore, che (nell'ultima componente) il livello di revisione del pacchetto Debian di questo programma, come spiegato in Perché i nomi dei pacchetti Debian sono così lunghi?, Sezione 6.3.
Il campo Architecture specifica il chip per il quale questo particolare binario è stato compilato.
Il campo Depends fornisce una lista di pacchetti che devono essere installati per poter installare questo pacchetto con successo.
Installed-Size indica quanto spazio su disco occuperà il pacchetto installato. È progettato per essere usato dai front-end di installazione per poter mostrare se c'è abbastanza spazio disponibile su disco per installare il programma.
La riga Section fornisce la sezione dove questo pacchetto Debian è archiviato presso i siti FTP Debian. Questo è il nome di una sottodirectory (all'interno di una delle directory principali, si veda Cosa sono tutte quelle directory negli archivi FTP Debian?, Sezione 5.1) dove è archiviato il pacchetto.
Priority indica quanto è importante questo pacchetto per l'installazione, così che i software semi-intelligenti come dselect o apt possano ordinare il pacchetto dentro una categoria di pacchetti opzionali già installati per esempio. Si veda Cosa sono i pacchetti Required, Important, Standard, Optional, o Extra?, Sezione 6.7.
Il campo Maintainer fornisce l'indirizzo e-mail della persona che è attualmente responsabile per la manutenzione di questo pacchetto.
Il campo Description fornisce un breve riassunto delle funzionalità del pacchetto.
Per ulteriori informazioni riguardo tutti i campi possibili che può avere un pacchetto, si veda il Debian Packaging Manual, sezione 4., "Control files and their fields".
Conffiles è una lista di file di configurazione (solitamente situata in /etc) che il sistema di gestione dei pacchetti non sovrascriverà quando il pacchetto viene aggiornato. Questo assicura che i valori locali per il contenuto di questi file vengano conservati, ed è una caratteristica critica che permette l'aggiornamento di pacchetti su un sistema in esecuzione.
Per determinare esattamente quali file sono conservati durante un aggiornamento, si esegua:
dpkg --status pacchetto
E si guardi sotto "Conffiles:".
Questi file sono script eseguibili che vengono automaticamente eseguiti prima o dopo che un pacchetto viene installato. Insieme ad un file chiamato control, tutti questi file sono parte della sezione "control" di un file Debian.
I singoli file sono:
Questo script viene eseguito prima che il pacchetto venga spacchettato dall'archivio Debian (".deb"). Molti script 'preinst' interrompono i servizi per i pacchetti che devono essere aggiornati fino a che la loro installazione o aggiornamento non sono completati (a seguito dell'esecuzione con successo dello script 'postinst').
Questo script tipicamente completa ogni configurazione richiesta dal pacchetto foo una volta che foo è stato spacchettato dal suo archivio Debian (".deb"). Spesso gli script 'postinst' richiedono all'utente degli input e/o lo avvertono che se accetta le impostazioni predefinite deve ricordarsi di tornare indietro e riconfigurare il pacchetto se la situazione lo richiede. Molti script 'postinst' eseguono poi tutti i comandi necessari ad avviare o riavviare un servizio una volta che il pacchetto è stato installato o aggiornato.
Questo script tipicamente ferma tutti i demoni associati ad un pacchetto. Viene eseguito prima della rimozione di file associati al pacchetto.
Questo script tipicamente modifica i collegamenti (link) od altri file associati a foo, e/o rimuove i file creati da quel pacchetto. (Si veda anche Cos'è un pacchetto virtuale?, Sezione 6.8.)
Attualmente tutti i file di controllo si possono trovare nella directory /var/lib/dpkg/info. I file attinenti al pacchetto foo iniziano con il nome "foo" ed hanno le estensioni "preinst", "postinst", ecc., a seconda della funzione. Il file foo.list nella stessa directory elenca tutti i file installati con il pacchetto foo. (Si noti che la localizzazione di questi file è propria di dpkg; non ci si dovrebbe fare affidamento.)
Ad ogni pacchetto Debian viene assegnata una priorità dai manutentori della distribuzione, come aiuto al sistema di gestione dei pacchetti. Le priorità sono:
Required (Richiesto): pacchetti necessari al corretto funzionamento del sistema.
Comprende tutti gli strumenti necessari alla riparazione di difetti di sistema. Non si rimuovano questi pacchetti o il proprio sistema potrebbe diventare completamente non funzionante e probabilmente non si riuscirebbe nemmeno ad usare dpkg per rimettere le cose a posto. I sistemi con solo i pacchetti Required sono probabilmente inutilizzabili, ma hanno abbastanza funzionalità per permettere all'amministratore di sistema di avviare ed installare altri programmi.
Important (Importante): pacchetti che si dovrebbero trovare su di un qualsiasi sistema simile a Unix (Unix-like).
Altri pacchetti necessari ad un corretto funzionamento del sistema, senza i quali non sarebbe utilizzabile. Tra questi NON sono inclusi Emacs o X11 o TeX o qualsiasi altra grossa applicazione. Questi pacchetti costituiscono solo l'infrastruttura di base.
Standard: pacchetti comuni su qualsiasi sistema Linux, compreso un ragionevolmente piccolo ma nemmeno troppo limitato sistema a caratteri.
Questo è quello che viene installato di base se l'utente non seleziona nient'altro. Non include molte grosse applicazioni, ma include Emacs (che è più un pezzo di infrastruttura che un'applicazione) ed un ragionevole sottogruppo di TeX e LaTeX (se risulta possibile senza X).
Optional (Opzionale): pacchetti che comprendono tutto quello che si può voler installare senza nemmeno sapere cos'è, o se non si hanno delle necessità particolari.
Comprende X11, una distribuzione completa di TeX e molte applicazioni.
Extra: pacchetti che o entrano in conflitto con altri di priorità più alta, probabilmente utili se già si sa a cosa servono, oppure hanno requisiti speciali che li rendono non adatti come "Optional".
Un pacchetto virtuale è un nome generico che si applica ad ognuno di un gruppo di pacchetti, che fornisce simili funzionalità di base. Per esempio, entrambi i programmi tin e trn sono news reader, e dovrebbero quindi soddisfare qualsiasi dipendenza di un programma che richiede un news reader su di un sistema per poter lavorare o essere utile. Si dice quindi che entrambi forniscono il "pacchetto virtuale" chiamato news-reader.
Similmente, smail e sendmail forniscono entrambi la funzionalità di agente di trasporto posta (mail transport agent). Si dice quindi che fornisco il pacchetto virtuale "mail transport agent". Se uno dei due è installato, allora ogni pacchetto che dipende dall'installazione di un mail-transport-agent vedrà le proprie dipendenze soddisfatte dall'esistenza di questo pacchetto virtuale.
Debian fornisce un meccanismo che, se più di un pacchetto che fornisce lo stesso pacchetto virtuale è installato su di un sistema, allora l'amministratore di sistema può impostarne uno come pacchetto preferito. Il relativo comando è update-alternatives, ed è maggiormente descritto su Ad alcuni utenti piace mawk, ad altri piace gawk; ad alcuni piace vim, ad altri piace elvis; ad alcuni piace trn, ad altri piace tin; come supporta Debian le diversità?, Sezione 10.10.
Il sistema dei pacchetti Debian ha una serie di "dipendenze" dei pacchetti che sono pensate per indicare (con un singolo termine) il livello con cui un determinato Programma A può operare indipendentemente dall'esistenza di un Programma B su un dato sistema:
Il pacchetto A dipende dal Pacchetto B se B deve essere assolutamente installato per eseguire A. In alcuni casi, A dipende non solo da B, ma da una versione di B. In questo caso la dipendenza dalla versione è solitamente un limite minore, nel senso che A dipende da qualsiasi versione di B più recente di quella specificata.
Il pacchetto A raccomanda il Pacchetto B se il manutentore del pacchetto giudica che la maggior parte degli utenti non vorrebbe A senza le funzionalità fornite da B.
Il pacchetto A suggerisce il Pacchetto B se B contiene file attinenti alle funzioni di A (e che solitamente le migliorano).
Il pacchetto A va in conflitto con il Pacchetto B quando A non è in grado di funzionare se B è installato sul sistema. Molto spesso i conflitti si hanno quando A contiene dei file che rappresentano dei miglioramenti di quelli in B. Spesso "va in conflitto" è combinato con "sostituisce".
Il pacchetto A sostituisce il Pacchetto B quando i file installati da B vengono rimossi e (in alcuni casi) sovrascritti dai file di A.
Il pacchetto A fornisce il Pacchetto B quando tutti i file e le funzionalità di B sono incorporate in A. Questo meccanismo permette agli utenti con limitato spazio su disco rigido di avere solo la parte del pacchetto A realmente necessaria.
Informazioni più dettagliate sull'utilizzo di ognuno di questi termini possono essere trovate nel Packaging manual e nel Policy manual.
"Pre-Depends" è una dipendenza speciale. Con la maggior parte dei pacchetti, dpkg spacchetterà il file di archivio (ovvero il suo file .deb) indipendentemente dal fatto che i file da cui dipende siano o meno sul sistema. Semplificando, spacchettare vuol dire che dpkg estrarrà i file da installare dall'archivio e li metterà al loro posto. Se quei pacchetti dipendono dall'esistenza di qualche altro pacchetto sul sistema, dpkg si rifiuterà di completare l'installazione (eseguendo l'azione "configura"), finché gli altri pacchetti non saranno installati.
Tuttavia, per alcuni pacchetti, dpkg si rifiuterà persino di spacchettarli finché certe dipendenze non vengono risolte. Tali pacchetti si dice che "Pre-dipendono" dalla presenza di altri pacchetti. Il progetto Debian forniva questo meccanismo per supportare un aggiornamento sicuro di sistemi dal formato a.out al formato ELF, dove l'ordine in cui i pacchetti venivano spacchettati era critico. Esistono altre situazioni di aggiornamenti estesi in cui questo metodo è utile, per esempio pacchetti con priorità richiesta e dipendenza da libC.
Come sopra, informazioni più dettagliate al riguardo possono essere reperite nel Packaging manual.
Queste etichette "voglio" indicano il volere dell'utente riguardo ad un pacchetto (come indicato dalle azioni dell'utente nella sezione "Seleziona" di dselect o dal richiamo diretto dell'utente di dpkg).
I loro significati sono:
sconosciuto - l'utente non ha mai indicato se vuole il pacchetto
installa - l'utente vuole il pacchetto installato od aggiornato
rimuovi - l'utente vuole che il pacchetto sia rimosso, ma non i file di configurazione esistenti.
elimina - l'utente vuole il pacchetto completamente rimosso, compresi i file di configurazione.
mantieni - l'utente non vuole che il pacchetto sia processato, ovvero vuole mantenere la versione attuale con lo stato corrente, qualunque essi siano.
Esistono due maniere per mantenere (hold) pacchetti, con dpkg o con dselect.
Con dpkg, si deve solo esportare la lista delle selezioni dei pacchetti con:
dpkg --get-selections \* > selections.txt
Poi modificare il file risultante selections.txt
, modificare la
riga contenente il pacchetto che si desidera mantenere, p.e.
libc6
, da questo:
libc6 install
a questo:
libc6 hold
Salvare il file e ricaricarlo dentro il database di dpkg con:
dpkg --set-selections < selections.txt
Con dselect, si deve solo entrare nella schermata [S]eleziona ([S]elect, trovare il pacchetto che si desidera mantenere al suo stato attuale e premere il tasto '=' (o 'H'). Le modifiche diverranno attive immediatamente dopo che si è usciti dalla schermata [S]eleziona.
I pacchetti sorgente Debian non possono realmente venire "installati", vengono solo spacchettati in qualsiasi directory si voglia per compilare i pacchetti binari che producono.
I pacchetti sorgente sono distribuiti sulla maggior parte dei mirror dove si
possono ottenere i pacchetti binari. Se si imposta il proprio
sources.list(5)
di APT per includere le righe "deb-src"
appropriate, si sarà in grado di scaricare facilmente qualsiasi pacchetto
sorgente eseguendo
apt-get source foo
Per aiutare nella reale compilazione del pacchetto sorgente, il pacchetto sorgente Debian fornisce il cosiddetto meccanismo di dipendenze di compilazione. Significa che il manutentore del pacchetto sorgente conserva una lista di altri pacchetti che sono richiesti per compilare il proprio pacchetto. Per vedere come questo sia utile, si esegua
apt-get build-dep foo
prima di compilare il sorgente.
Si avrà bisogno di tutti i file foo_*.dsc, foo_*.tar.gz e foo_*.diff.gz per compilare il sorgente (nota: non c'è nessun .diff.gz per alcuni pacchetti nativi Debian).
Una volta che li si ha (Come si installa un pacchetto
sorgente?, Sezione 6.13), se si ha il pacchetto dpkg-dev
installato, il seguente comando:
dpkg-source -x foo_versione-revisione.dsc
estrarrà il pacchetto in una directory denominata foo-versione.
Se si vuole solo compilare il pacchetto, si può entrare nella directory foo-versione e lanciare il comando
dpkg-buildpackage -rfakeroot -b
per compilare il pacchetto (si noti che questo richiede anche il pacchetto
fakeroot
), e poi
dpkg -i ../foo_versione-revisione_arch.deb
per installare il pacchetto appena compilato.
Per maggiori dettagli al riguardo si legga la New Maintainers' Guide,
disponibile nel pacchetto maint-guide
o su http://www.debian.org/doc/devel-manuals#maint-guide
.
[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ successivo ]
The Debian GNU/Linux FAQ
versione 4.0.4ubuntu1, 23 September 2008