Aptitude
Versioni Compatibili Tutte le versioni supportate di Debian |
|
Introduzione
Questa guida è dedicata all'uso di Aptitude.
Il completissimo Manuale Utente di Aptitude in formato html si può trovare in /usr/share/doc/aptitude/html/en/index.html
, installando il pacchetto aptitude-doc-en
. Oppure on-line al seguente indirizzo: aptitude user's manual. Purtroppo il manuale è solo in inglese.
Cos'è Aptitude
Aptitude è un frontend per la gestione avanzata dei pacchetti di una distribuzione Debian, ma risulta valido per tutte le distribuzioni che supportano APT (http://www.debian.org/doc/manuals/apt-howto/ch-distros.it.html).
Aptitude è ormai lo strumento preferenziale per l'amministrazione dei pacchetti su Debian, in quanto non solo raggruppa in un unico semplice programma le funzionalità di molti tool (apt-get, apt-cache, etc.) ma anche perché permette di gestire in modo molto più facile (ed efficace) situazioni complesse (dipendenze, dipendenze inverse, rimozione pacchetti non utilizzati, etc).
Aptitude è un frontend a dpkg esattamente come apt-get, che sembra essere destinato a sostituire integralmente lo stesso apt-get (e affini), tanto che nelle release notes di Sarge si legge:
ed anche:
Si può utilizzare Aptitude in due modi: da linea di comando, cioè come apt-get (la sintassi e le opzioni sono identiche, o quasi), oppure tramite l'interfaccia visuale basata sulle librerie ncurses.
L'interfaccia visuale verrà trattata più diffusamente, perché si ritiene che sia uno strumento fondamentale per la gestione dei pacchetti e soprattutto per la diagnostica e la risoluzione degli eventuali problemi riscontrati.
Uso da linea di comando
Anche dalla linea di comando l'uso di Aptitude è molto semplice e comodo. Si usa in genere la seguente forma:
aptitude azione [argomenti...]
azione dice ad Aptitude quale azione svolgere; i rimanenti argomenti dipendono dall'azione scelta e consistono tipicamente in una lista di nomi di pacchetti. Di seguito le azioni più importanti.
update
# aptitude update
Aggiorna la lista dei pacchetti (come premere 'u' dall'interfaccia visuale o come apt-get update
) .
safe-upgrade
# aptitude safe-upgrade
Aggiorna tutti i pacchetti aggiornabili senza che nascano conflitti. Per conflitto si intende una situazione in cui l'aggiornamento di un pacchetto richide la rimozione di uno o più differenti pacchetti, ergo l'uso di safe-upgrade causa l'aggiornamento di tutti quei pacchetti che possono essere aggiornati senza che sia necessario rimuovere contestualmente altri pacchetti. Da manuale: Quando si verificano problemi di dipendenze dei pacchetti, usa un algoritmo «sicuro» per risolverli. Questo risolutore cerca di preservare il maggior numero possibile delle scelte dell'utente; non rimuove mai un pacchetto e non installa mai una versione di un pacchetto che non sia la versione candidata predefinita.
L'utilizzo di questo comando implica necessariamente l'opzione --safe-resolver
(l'opzione --full-resolver
viene sempre automaticamente rigettata).
Una sintassi del tutto equivalente è # aptitude upgrade
.
full-upgrade
aptitude full-upgrade
Anche questo comando aggiorna tutti i pacchetti, ma è più aggressivo nella risoluzione delle dipendenze: nuovi pacchetti saranno installati e altri rimossi, fino a quando tutte le dipendenze non saranno soddisfatte. Questo comando potrebbe fare cose non desiderate (come, appunto, installare nuovi pacchetti o rimuoverne altri) quindi deve essere usato con cautela (specialmente nei casi in cui segnala esplicitamente problemi nella risoluzione delle dipendenze). Si noti che questo comando implica l'opzione --full-resolver
, a meno che l'utente non specifichi l'opzione --safe-resolver
, nel qual caso full-upgrade funziona esattamente come safe-upgrade. Una sintassi del tutto equivalente è # aptitude dist-upgrade
.
install, remove, purge, reinstall
# aptitude install pacchetto/i # aptitude remove pacchetto/i # aptitude purge pacchetto/i # aptitude reinstall pacchetto/i
Questi comandi rispettivamente installano, rimuovono, eliminano completamente (eliminazione anche dei file di configurazione) o reinstallano il o i pacchetti specificati.
search
$ aptitude search espressione/i
Elenca i pacchetti che contengono nel nome una delle espressioni fornite. Le espressioni possono essere semplici stringhe (ad esempio il nome di un pacchetto) o anche espressioni più complesse ("Search Patterns").
show
$ aptitude show pacchetto/i
Mostra su terminale le informazioni di ogni pacchetto specificato.
versions
$ aptitude versions espressione
Elenca, per ogni pacchetto cui corrisponde l'espressione specificata, lo stato (installato o meno), il numero di verisone, la distribuzione di appartenenza e il valore di pin (si veda la guida dedicata al pinning).
Opzioni
-s, --simulate
Nessuna azione; effettua una simulazione degli eventi che si verificherebbero, ma non cambia realmente il sistema. Esempio di comando: # aptitude install pacchetto -s
-t, --target-release
Permette in genere di aggiornare/installare i pacchetti specificati e le relative dipendenze in base alla distribuzione bersaglio, es.: # aptitude install pacchetto -t unstable
. Si veda la guida dedicata al pinning per maggiori, ma soprattutto fondamentali, informazioni. Non usare questa opzione se non si a chiaro in cosa consiste.
-V, --verbose-versions
Mostra il numero di versione completo dei pacchetti aggiornati e installati.
Easter eggs
$ aptitude mooo $ aptitude -v moo $ aptitude -vv moo $ aptitude -vvvvvvvvv moo
File di configurazione
È possibile definire le opzioni di aptitude non solo da riga di comando, ma anche specificando i corrispondenti parametri in appositi file di configurazione, ad esempio in un unico file /etc/apt/apt.conf
, in più file dal nome arbitrario in /etc/apt/apt.conf.d/
o ancora in ~/.aptitude/config
.
A prescindere dal, o dai, file di configurazione è possibile usare in tutti i casi due tipi di sintassi, ad esempio:
APT { Default-Release "testing"; Cache-Limit 24000000; } Acquire::http::Proxy "http://indirizzo_proxy:3142/"; Aptitude { Autoclean-After-Update "true"; Auto-Fix-Broken "true"; CmdLine::Ignore-Trust-Violations "true"; Purge-Unused "true"; }
APT::Default-Release "testing"; APT::Cache-Limit 24000000; Acquire::http::Proxy "http://indirizzo_proxy:3142/"; Aptitude::Autoclean-After-Update "true"; Aptitude::Auto-Fix-Broken "true"; Aptitude::CmdLine::Ignore-Trust-Violations "true"; Aptitude::Purge-Unused "true";
Questa configurazione definisce quanto segue:
- La target relase è testing. Questo significa che tutti i pacchetti appartenenti a tale rilascio hanno priorità 990 (si veda la pagina dedicata al pinning per maggiori informazioni su come APT decide la priorità dei pacchetti da installare).
- La massima dimensione in byte per memorizzare le informazioni dei pacchetti disponibili nei vari sorgenti; maggiore il numero di repository specificato in
source.list
maggiore sarà lo spazio occupato (questo parametro NON definisce lo spazio riservato alla memorizzazione dei pacchetti installati e/o scaricati). - Da specificare SOLO e soltanto se si è installato e configurato correttamente un proxy per la gestione dei pacchetti, come
apt-cacher
per esempio. - Le opzioni figlie di Aptitude influenzano evidentemente solo il comportamento di Aptitude
- Ogni volta che viene aggiornato l'elenco dei pacchetti disponibili, ad esempio tramite
aptitude update
vengono anche rimossi tutti i pacchetti che sono stati installati automaticamente per soddisfare delle dipendenze per altri pacchetti e che non sono più necessari. - Corregge se possibile le dipendenze non soddisfatte.
- Permette l'installazione di pacchetti da repository di cui non si è installata la chiave di autenticazione.
- Quando un pacchetto viene rimosso questo viene completamente eliminato, come se si fosse usato il comando
aptitude purge
.
- Ogni volta che viene aggiornato l'elenco dei pacchetti disponibili, ad esempio tramite
Nota Nello stesso file apt.conf è possibile specificare sia le opzioni specifiche di apt-get che quelle di aptitude, ciascun strumento ignorerà automaticamente le opzioni che non gli competono. |
Interfaccia grafica
Descrizione dell'interfaccia grafica
La prima schermata che Aptitude ci presenta, dopo che l'abbiamo lanciato da linea di comando, e dopo il caricamento delle informazioni attuali sui pacchetti ("caricamento della cache"), è divisa orizzontalmente in due parti.
Nella parte superiore troviamo una zona a sfondo blu con un menù che propone diverse opzioni (al quale si accede digitando Ctrl+T), e una zona a sfondo nero in cui si vede l'albero dei pacchetti disponibili, classificati in base al loro stato (installati, non installati, ecc.).
Per vedere il contenuto di uno dei rami usiamo le frecce "su" e "giù" fino a selezionare la riga corrispondente e premiamo invio. Sotto al ramo in questione ora abbiamo dei sotto-rami, e premendo invio sui vari sotto-rami si accede allo stesso modo ai sotto-sotto-rami e così via, fino ad arrivare ai pacchetti.
La parte inferiore è invece dedicata alla descrizione del pacchetto attualmente selezionato. Alcuni pacchetti, per esempio k3b, hanno una descrizione molto lunga: premendo TAB e usando le frecce è possibile leggerla tutta.
Ogni riga che mostra il nome di un pacchetto riporta anche molte informazioni. Per esempio, riporta lo stato di alcuni pacchetti nel mio sistema (nota: il mio sistema è una Sarge, ma ho installato diversi pacchetti da testing e anche alcuni da unstable. Per informazioni sul pinning vedere APT uso avanzato: mixare releases diverse ):
stato nome vers. attuale vers. aggiornata i aptitude 0.2.15.9-2 0.2.15.9-2 i amule 2.0.3-3 2.0.3-4 i A amule-common 2.0.3-3 2.0.3-4 c hotplug <nessuna> 0.0.200403 p apmd <nessuna> 3.2.2-3
Possiamo vedere che:
- aptitude è installato ed è alla versione più recente
- amule è installato ma è aggiornabile alla versione 2.0.3-4
- amule-common è installato per soddisfare una dipendenza (
A
), cioè solo a causa di un pacchetto che dipende da lui (amule). Anch'esso è aggiornabile - hotplug non è installato, ma quando l'ho cancellato ho scelto di mantenere i file di configurazione (
c
) - apmd non è installato (
p
), oppure è stato cancellato con l'opzione "purge" (comando: "_"): lo stato risultante è il medesimo
Tramite semplici comandi si possono visualizzare molte altre informazioni. I comandi principali sono:
v
- visualizza le versioni disponibili per il pacchetto;
d
- visualizza le dipendenze del pacchetto;
r
- visualizza i pacchetti che dipendono dal pacchetto selezionato (dipendenze inverse);
C
- scarica da internet e visualizza il changelog del pacchetto;
q
- chiude la schermata attuale e passa a quella precedente.
Per una lista completa vedere la guida online con ?
.
Ora premiamo invio su di un pacchetto: ci appare la schermata relativa al pacchetto, con la descrizione completa e molte altre informazioni, organizzate ad albero come abbiamo già visto. Se ci interessa qualche informazione in più su uno dei pacchetti che troviamo in questa schermata, lo selezioniamo e premiamo invio: appaiono le versioni disponibili del pacchetto. Se selezioniamo una delle versioni e premiamo invio ci ritroviamo nella schermata informativa di quel pacchetto. Fate attenzione perché in questo modo si può perdere facilmente l'orientamento.
Torniamo alla vista dell'albero dei pacchetti premendo q
tante volte quanto serve (se vi sbagliate e lo premete una volta in più, Aptitude vi chiede se volete uscire dal programma: per il momento dite di no ;-)).
Riassunto principali comandi
u
(minuscolo)- aggiorna la lista dei pacchetti.
+
- marca il pacchetto selezionato per l'installazione o l'aggiornamento;
-
(segno meno)- marca il pacchetto selezionato per la rimozione;
_
(underscore)- marca il pacchetto selezionato per la rimozione, eliminando tutti i file di configurazione (purge);
U
(maiuscolo)- marca per l'aggiornamento tutti i pacchetti per cui sia disponibile una nuova versione;
=
- mette in hold il pacchetto selezionato. Questo vuol dire che il pacchetto non verrà aggiornato anche se una nuova versione è disponibile e si seleziona di aggiornare i pacchetti (ad esempio con
U
); C
(maiuscolo)- scarica e mostra il changelog del pacchetto selezionato;
b
- trova il prossimo pacchetto difettoso;
g
- procede con l'installazione, la rimozione e l'aggiornamento.
Esempio: aggiornare i pacchetti
Per la descrizione dell'utilizzo di Aptitude useremo come esempio una sessione reale, in cui vengono svolte alcune normali operazioni di aggiornamento e amministrazione dei pacchetti.
Per prima cosa, nella nostra sessione di amministrazione, aggiorniamo le informazioni sui pacchetti disponibili. Con apt-get avremmo digitato apt-get update
, mentre in Aptitude è sufficiente premere u
.
Fate attenzione perché Aptitude non chiede conferma dopo che avete impartito un comando, quindi non digitate nulla senza prima essere sicuri/e di cosa state per fare.
Dopo aver fatto l'update potremmo trovare una, due, o tre voci nuove nell'albero dei pacchetti: "Aggiornamenti di sicurezza", "Pacchetti aggiornabili", e "Pacchetti nuovi". Per fare scomparire le prime due è necessario aggiornare tutti i pacchetti contenuti nei rispettivi rami, mentre per far sparire la terza è sufficiente premere f
(forget).
Una buona regola per l'amministratore è quella di far sì che alla fine dell'aggiornamento queste tre voci non siano presenti. Se ci sono dei pacchetti che risultano aggiornabili, ma che non volete aggiornare, probabilmente dovreste bloccarli alla versione desiderata con =
, oppure dovreste leggere la guida già citata sul pinning.
Ora torniamo ai pacchetti mostrati prima e supponiamo di voler aggiornare amule: lo selezioniamo e premiamo +
. Questo marcherà in verde, cioè per l'installazione, sia amule che amule-common.
Poi però ci viene un'idea migliore, e decidiamo di aggiornare tutti i pacchetti aggiornabili, quindi digitiamo ^
per risalire al ramo superiore della vista, finché arriviamo a "Pacchetti installati" poi usiamo la freccia in alto e se necessario risaliamo ancora ai rami superiori finché non arriviamo a "Pacchetti aggiornabili" e qui premiamo +
. Questo marcherà per l'installazione tutti i pacchetti aggiornabili :-D
Risolvere eventuali problemi con delle dipendenze
Dopo aver marcato per l'installazione tutti i pacchetti aggiornabili, Aptitude ci segnala nella zona blu che c'è un pacchetto "errato" cioè con problemi di dipendenze. Senza battere ciglio premiamo b
e leggiamo:
iB udev 0.070 0.074
dove "B" significa "con errori", e sotto si legge:
Alcune dipendenze di udev non sono soddisfatte: *udev è in conflitto con module-init-tools (< 3.2pre9-1)
premiamo invio su udev, e ci appare la schermata con tutte le informazioni su udev stesso, comprese le dipendenze: selezioniamo module-init-tools e premiamo invio. Ora ci appaiono tutte le versioni disponibili di module-init-tools, tra cui vediamo che è presente la 3.2pre9-1: non ci resta che selezionarla e marcarla per l'installazione :-D.
Quello che è successo è semplicemente che nel mio sistema udev è in testing, e fino alla versione 0.070 funzionava bene con module-init-tools-3.2pre1-2, che invece è in stable. Aggiornando tutto abbiamo marcato per l'installazione il nuovo udev, versione 0.074, che però dipende da module-init-tools >= 3.2pre9-1. Poiché questo pacchetto è in testing, APT non ha potuto risolvere la dipendenza automaticamente: se un pacchetto è in una distribuzione (e APT è configurato nel modo giusto) non verrà mai passato ad un'altra, a meno che non siamo noi a farlo manualmente.
Si prega di notare che questo comportamento non è un bug, ma una cosa voluta: APT ha ricevuto un comando ambiguo e lo segnala generando un errore, proprio come noi ci aspettiamo da lui ;-).
In effetti, i reali colpevoli della generazione dell'errore siamo noi. Infatti, per permettere ad APT di gestire correttamente delle dipendenze in testing, dobbiamo semplicemente usare "testing" come distribuzione predefinita.
Ricordate che abbiamo lanciato Aptitude semplicemente con il comando aptitude
? E ricorderete anche che il mio sistema è una Sarge (stable). Questo equivale a lanciare Aptitude con il comando aptitude -t stable
, da cui il nostro problema.
Se avessimo usato aptitude -t testing
Aptitude avrebbe risolto correttamente la dipendenza, ma attenzione: in questo modo diciamo ad Aptitude che testing è la nostra release predefinita (che non è vero) e lui ci mostrerà come aggiornabili tutti i pacchetti che lo sono in testing, cioè anche tutti quelli in stable (come peraltro ci aspettiamo che faccia ;-)).
Il fatto è che Aptitude, per quanto avanzato, ancora non legge il pensiero dell'amministratore, e fa solo il suo mestiere: prende tutte le decisioni ovvie autonomamente, e genera un errore quando non sa cosa decidere.
Personalizzare la visualizzazione dei pacchetti
Con Aptitude è possibile personalizzare sia i campi visualizzati nella lista dei pacchetti, sia il raggruppamento in sezioni e sotto-sezioni.
Personalizzare il raggruppamento in sezioni
Le sezioni nelle quali sono raggruppati i pacchetti quando si avvia Aptitude (e non solo) sono generate dinamicamente da un insieme di regole separate da virgola. È possibile vedere e modificare le regole che generano la vista attuale premendo G
.
Le regole vengono elaborate in sequenza dalla prima all'ultima.
Vediamo alcune regole:
filter(missing)
- non visualizza i pacchetti che esistono solo nelle dipendenze di un altro pacchetto.
status
- Raggruppa i pacchetti in:
- Installati
- Non installati
- Aggiornamenti della sicurezza
- Aggiornabili
- Obsoleti
- Virtuali
section[(mode[,passthrough])]
- Raggruppa i pacchetti in base alla loro sezione. mode può assumere uno dei seguenti valori:
topdir
- Raggruppa un base alla sezione dell'archivio Debian (esempio: "main", "contrib", "non-free" ...).
subdir
- Raggruppa in base alla sezione logica (esempio: "admin", "base", "devel", "gnome", "kde", ecc ...)
none
- Raggruppa in base delle sezioni formate dalla somma delle precedenti (esempio: "contrib/admin", "contrib/devel", "non-free/admin", "non-free/devel").
task
- Crea un albero dei pacchetti raggruppandoli per task.
- Se viene usato il secondo parametro opzionale
passthrough
i pacchetti che per qualche motivo non hanno una sezione vengono passati alla regola successiva senza essere inseriti in categorie.
All'avvio di Aptitude, premendo G
si può vedere che vengono usate le seguenti regole:
filter(missing),task,status,section(subdir,passthruough),section(topdir,passthrough)
In base a quanto detto la spiegazione di queste regole è semplice: visualizza solo i pacchetti reali, crea l'albero dei task, raggruppa i pacchetti per stato, per ogni stato raggruppa in sezioni logiche e all'interno di ogni sezione logica raggruppa in base alla sezione dell'archivio.
Cercare un pacchetto
Ora supponiamo di voler vedere se in Debian c'è qualche programma per la gestione dei contenuti, e l'acronimo in inglese è "cms". Per fare questo possiamo usare le funzioni di ricerca di Aptitude: per prima cosa digitiamo /
per la ricerca della stringa "cms" nei nomi dei pacchetti.
Ora però ci viene in mente che un cms non contiene necessariamente la stringa "cms" nel nome, quindi facciamo, con la stessa stringa, una ricerca nelle descrizioni dei pacchetti: digitiamo ancora /
e inseriamo "~dcms
". Aptitude ci mostra il primo risultato della ricerca, per vedere i risultati successivi premiamo n
, e per tornare indietro nella lista \
.
Per Limitare la lista dei pacchetti visualizzati possiamo usare il comando l
, che si usa allo stesso modo di /
ma mostra tutti e soli i pacchetti corrispondenti alla ricerca, organizzati ad albero nel modo che abbiamo già visto.
Ricerca avanzata
Aptitude supporta numerose opzioni di ricerca come il precedente ~d
per cercare una stringa nelle descrizioni. La stringa di ricerca può inoltre essere una REGEXP (espressione regolare). Queste opzioni possono essere usate indifferentemente da linea di comando (dopo search
) che dall'interfaccia grafica (premendo /
oppure l
).
Di seguito si riporta qualche esempio. Fare riferimento alla guida di Aptitude citata all'inizio per i dettagli.
Volete sapere quali pacchetti di gnome 2.14 son entrati in Etch? Semplice:
$ aptitude search gnome~V2.14
Il seguente comando cerca invece i pacchetti che contengono editor
nella descrizione e che appartengono alla sezione sound
:
$ aptitude search ~deditor~ssound
File di configurazione
È possibile definire le opzioni di aptitude, sia che lo si usi da riga di comando che tramite interfaccia visuale, in diversi modi, per esempio tramite un file apt.conf.
Approfondimenti
Manpages
man aptitude
(si noti che la maggior parte delle opzioni influiscono solo sull'utilizzo a riga di comando, non sull'interfaccia visuale).
Sitografia
- Aptitude Introduction: ottima introduzione ad Aptitude (in inglese) che tratta (tra le altre cose) molte più opzioni della linea di comando rispetto alla presente guida (per vedere tutte le diapositive cliccare sullo 0 che appare in basso al centro al passaggio del mouse).
- Aptitude User's Manual: completissimo manuale di riferimento di Aptitude (disponibile solo in inglese). Lo stesso manuale si può trovare in
/usr/share/doc/aptitude/html/en/index.html
installando il pacchettoaptitude-doc-en
, oppure in italiano in/usr/share/doc/aptitude/html/it/index.html
installando il pacchettoaptitude-doc-it
.
Guida scritta da: Tindal | Debianized 80% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |