Attributi di un pacchetto

Quando il gestore dei pacchetti mostra il contenuto di un pacchetto fornisce una serie di informazioni su di esso tramite degli attributi caratteristici tra i quali, a giudizio dell'autore, si distinguono per importanza il grado di priorità (priority) e alcune etichette riguardanti il modo in cui un pacchetto dipende da altri pacchetti.


Table 3.3: Gradi di priorità di un pacchetto
Priorità Disinstallazione Pacchetto esempio
Obbligatoria molto sconsigliata login
Importante sconsigliata adduser
Normale sconsigliata gcc
Facoltativa a discrezione utente xserver-xfree86
Extra a discrezione utente flightgear


I gradi di priorità possibili, illustrati brevemente in tabella 3.3, sono:

Obbligatoria (Required)

Pacchetto non rimuovibile perchè necessario al funzionamento del sistema. Per esempio, disinstallando il pacchetto login non è più possibile accedere al sistema.

Importante (Important)

Pacchetto la cui rimozione causa inconvenienti da seri a gravi, giungendo anche a rendere instabile il sistema. Per esempio, disinstallando il pacchetto adduser diventa impossibile aggiungere nuovi utenti al sistema.

Normale (Standard)

Pacchetto sempre presente in ambiente Linux e non richiedente la presenza del sistema grafico. Un esempio è costituito dal pacchetto gcc, contenente il compilatore GNU di linguaggio C.

Facoltativa (Optional)

Pacchetto che è ragionevolmente sensato installare. Un esempio è costituito dal pacchetto xserver-xfree86, contenente una parte del sistema grafico.

Extra (Extra)

Pacchetto con software molto specialistico oppure con componenti software che hanno altri possibili candidati con la medesima funzionalità. Il pacchetto flightgear contenente un simulatore di volo ne è un esempio (Fig.4.2).

Bisogna sottolineare che l'installazione e rimozione dei pacchetti sono operazioni a carico dell'amministratore, che ha pieni poteri. Se egli vuole rimuovere un pacchetto con priorità, mettiamo, importante, il sistema non potrà far nulla per impedirlo; se però l'amministratore non sa quel che fa rischia di menomare seriamente il sistema, fino, nei casi più gravi, a renderlo inutilizzabile.

Il modo in cui un pacchetto dipende da altri pacchetti, ovvero la modalità delle dipendenze, si illustra di solito considerando un ipotetico pacchetto A ed analizzando i possibili modi in cui può ``dipendere'' da un altro ipotetico pacchetto B. Naturalmente un pacchetto A può ``dipendere'' anche da numerosi pacchetti B. Nella discussione che segue sarà utile riferirsi anche alla tabella 3.5 riassuntiva. La modalità di dipendenza dall'ipotetico pacchetto B viene illustrata tramite una serie di etichette:

Dipende
(Depends) Il pacchetto B deve essere installato affinché il pacchetto A funzioni
Raccomanda
(Recommends) Il pacchetto B se installato aggiunge funzionalità accessorie al pacchetto A
Suggerisce
(Suggests) Il pacchetto B è collegato alle funzionalità del pacchetto A e spesso le migliora
Interferisce
(Conflicts) Il pacchetto B se installato non farà funzionare il pacchetto A
Sostituisce
(Replaces) Il pacchetto B è rimosso se viene installato il pacchetto A
Fornisce
(Provides) Le funzionalità del pacchetto B sono incorporate nel pacchetto A.
Alla luce di tutto ciò, osserviamo che per quanto riguarda le dipendenze apt-get installa sempre i pacchetti sotto Dipende ma non installa i pacchetti sotto Raccomanda o Suggerisce; aptitude consente invece di installare automaticamente anche i pacchetti sotto l'etichetta Raccomanda e di cancellare automaticamente tutti i file che, installati solo per soddisfare delle dipendenze, rimangono orfani del pacchetto da cui dipendevano. Inoltre, aptitude ha il vantaggio di ricordare quali sono i pacchetti installati su comando dell'utente piuttosto che installati automaticamente perché dipendenze; se però aptitude e apt-get vengono usati assieme, aptitude si confonde e non riconosce come installati su comando quei pacchetti installati tramite apt-get: ciò potrebbe causare problemi37. Per tale motivo è raccomandabile effettuare una scelta tra quale dei due usare e rispettarla, considerando apt-get sconsigliato38 (deprecated).


Table: Modalità delle dipendenze
Tipo Traduzione Modalità
Depends Dipende forte
Recommends Raccomanda debole
Suggests Suggerisce debole
Conflicts Interferisce forte
Replaces Sostituisce forte
Provides Fornisce debole


Alla fine di tutto questo discorso, facciamo un esempio utilizzando aptitude dalla riga di comando; andiamo ad osservare il contenuto del pacchetto lilo:

$ aptitude show lilo

Package: lilo

State: installed

Automatically installed: no

Version: 1:22.6.1-4

Priority: optional

Section: base

Maintainer: Andreas Roldan <aroldan@debian.org>

Uncompressed Size: 1009k

Depends: debconf (>= 1.2.9),libc6 (>= 2.3.2.ds1-4),libdevmapper1.00

Suggests: lilo-doc, mbr

Conflicts: manpages (< 1.29-3)

Description: [omessa]

Il sistema ci dice che questa versione di lilo per funzionare ha bisogno (Depends) di determinate versioni della libreria libc6 ed è collegata (Suggests) al pacchetto lilo-doc, che sarebbe molto utile installare visto che ne contiene la documentazione; inoltre veniamo informati che lilo è incompatibile (Conflicts) con certe versioni delle pagine Unix man (manpages), probabilmente perchè esse si riferirebbero a versioni obsolete di lilo.

Mauro Darida 2006-07-25