Crea sito

Comandi Linux in dettaglio: aptitude

15 / 100

aptitude
Package manager (Debian/Ubuntu).

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 (link).
È lo strumento preferito da molti 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, apt-mark, 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 e può essere utilizzato in due modi: da linea di comando, cioè come apt-get (con la stessa sintassi per i comandi principali), 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.

Installazione

A partire da Debian 9 (Stretch) l’omonimo pacchetto è diventato opzionale, per cui può essere necessario installare aptitude prima di poterlo utilizzare. Per esempio con apt e privilegi di amministrazione basta:
# apt install aptitude
In particolare ne è ancora raccomandabile l’installazione per:
  • gestire Debian con molti repository diversi per poter gestire più facilmente possibili conflitti;
  • per avvalersi dell’ineguagliata funzione di ricerca avanzata;
  • oppure ancora per disporre di un’interfaccia visuale ad APT anche senza server grafico attivo.

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, ma mantenuta solo per ragioni storiche, è:
# aptitude upgrade
Si noti che l’uso non è intercambiabile con apt-get upgrade, poiché apt-get in questo caso non effettuerà nemmeno l’installazione di nuovi pacchetti, mentre aptitude safe-upgrade permette l’installazione di nuovi pacchetti, se necessari per l’aggiornamento di altri, e impedisce soltanto la rimozione di pacchetti precedentemente installati. È invece equivalente, se non per la mancanza di un risolutore di conflitti, al comando apt upgrade .

Esempio

# aptitude safe-upgrade $(aptitude search ‘?origin(Unofficial Multimedia Packages) ?upgradable’ -F ‘%p’)
Questo comando mostra un esempio d’uso avanzato che permette di aggiornare i soli pacchetti provenienti dal repository deb-multimedia.

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, mantenuta per ragioni storiche, è:
# 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”).

Esempi

$ aptitude search iceweasel
Mostrerà tutti i pacchetti che contengono iceweasel nel loro nome.
$ aptitude search ‘~S ~i (!~stable ~Atesting !~Aunstable ~O”Unofficial Multimedia Packages”)’
Mostrerà tutti i pacchetti installati appartenenti alla sola suite (detta anche archive) testing e solo se provenienti dal repository di deb-multimedia (identificato attraverso l’attributo “origine”). Se nel proprio sources.list non sono specificati repository relativi ad altre suite i parametri !~stable e !~Aunstable possono essere omessi. In sintesi è necessario esplicitare sia i repositori disponibili che si vuole escludere che quelli da includere nel risultato della ricerca.
$ aptitude search ‘?installed?origin(Unofficial Multimedia Packages)?not(?origin(Debian))’
Sintassi simile alla precedente, ma in questo caso si è usato un comando che mostra tutti i pacchetti, a prescindere dalla suite, appartenenti a deb-multimedia, ma non appartenenti al repository principale. Per filtrare in base alla suite è sufficiente usare archive, che ne è un sinonimo, e specificarne il nome, invece di origin. Si veda la pagina “I repository ed il loro utilizzo” per capire dove dove trovare i parametri relativi al nome della release, all’origine e altro.

$ aptitude search ‘?origin(Unofficial Multimedia Packages) ?upgradable’ -F ‘%p %v %V’

Mostra tutti i pacchetti aggiornabili del solo repository deb-multimedia (posto naturalmente di averlo specificato nel proprio sources.list), visualizzando anche versione attualmente installata e candidata.

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 release 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 release bersaglio. Per esempio:
# aptitude -t stretch-backports install pacchetto

-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";
	Purge-Unused "true";
}
Translate »