Comandi Linux in dettaglio: aptitude

()

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";
}

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?