Apt-get

Versione del 7 nov 2014 alle 16:59 di S3v (discussione | contributi) (apt-get changelog - opzione "-d")
Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian
APT

Gestori di pacchetti

Comandi utili

Configurazione del sistema

Altro


Introduzione

apt-get è uno dei più noti e diffusi strumenti per la libreria APT, ovvero il sistema con cui si gestiscono i pacchetti (cioè i programmi) in Debian e derivate.

Questo strumento viene automaticamente installato all'atto dell'installazione del sistema operativo.

Comandi principali

update
# apt-get update

Aggiorna l'elenco dei pacchetti presenti nei repository specificati nel file /etc/apt/sources.list. Questo comando va sempre impartito prima di installare un pacchetto.

install
# apt-get install pacchetto1 pacchetto2 ... pacchettoN

Installa i pacchetti specificati, es.: apt-get install nano openssh-client. Si noti che se si usa install su un pacchetto già installato il comando assume il significato di "aggiorna" lo o gli specifici pacchetti.

remove
# apt-get remove pacchetto1 pacchetto2 ... pacchettoN

Simile al comando precedente, ma in questo caso i pacchetti vengono rimossi (disinstallati).

purge
# apt-get purge pacchetto1 pacchetto2 ... pacchettoN

Simile a remove, ma in questo caso i pacchetti vengono completamente eliminati: oltre ad essere disinstallati vengono eliminati eventuali file di configurazione e i pacchetti cancellati dalla cache.

upgrade
# apt-get upgrade

Aggiorna tutti i pacchetti installati all'ultima versione disponibile, purché tale operazione non richieda la rimozione di altri pacchetti installati oppure l'installazione di pacchetti che non erano già presenti nel sistema. Da manuale:

upgrade è usato per installare le versioni più recenti di tutti i pacchetti attualmente installati sul sistema, usando le fonti elencate in /etc/apt/sources.list. I pacchetti attualmente installati con nuove versioni disponibili sono recuperati e aggiornati; in nessun caso vengono rimossi pacchetti attualmente installati oppure recuperati e installati pacchetti che non lo sono già. I pacchetti attualmente installati che hanno una nuova versione, ma che non possono essere aggiornati senza cambiare lo stato di installazione di un altro pacchetto, vengono lasciati alla versione attuale. Deve essere prima effettuato un update in modo che apt-get sappia se sono disponibili nuove versioni dei pacchetti.

dist-upgrade
# apt-get dist-upgrade

Aggiorna tutti i pacchetti installati all'ultima versione disponibile. Da manuale:

dist-upgrade, oltre ad effettuare le funzioni di upgrade, gestisce anche in maniera intelligente le modifiche delle dipendenze delle nuove versioni dei pacchetti; apt-get ha un sistema «intelligente» di risoluzione dei conflitti e cerca di aggiornare i pacchetti più importanti a scapito di quelli meno importanti, se necessario. Il comando dist-upgrade può quindi rimuovere alcuni pacchetti.

autoclean
# apt-get autoclean

Rimuove dalla cache dei pacchetti scaricati tutti quei pacchetti che non sono più necessari, liberandone lo spazio occupato. La cache serve per permettere la reinstallazione di un pacchetto senza doverlo riscaricare, in caso sia ancora la versione più aggiornata del proprio repository, non ha nessun'altra utilità nel sistema e svuotare la cache non significa disinstallare i pacchetti contenuti. Per necessari si intendono tutti quei pacchetti indicati come dipendenze da altri pacchetti, tuttavia è possibile, in base ad alcune impostazioni personali, che anche i pacchetti segnalati come raccomandati siano ritenuti necessari. Inoltre il comando elimina dalla cache tutte le versioni obsolete dei pacchetti, ed è pertanto un comando sicuro da eseguire, senza effetti collaterali. La cache dei pacchetti è situata in /var/cache/apt/archive/. Si noti che rimuovere manualmente i pacchetti causerà un certo "disorientamento" da parte di apt convinto di avere ancora una copia di eventuali pacchetti in locale, ed è per questo che è stato invece reso disponibile questo comando.

In particolare saranno cancellati:

  • I file contenuti nella directory /var/cache/apt/archive/partial/ (pacchetti parzialmente scaricati e, dunque, incompleti)
  • I pacchetti contenuti nella directory /var/cache/apt/archive/ e non più presenti nei repository

</blockquoote>

clean
# apt-get clean

Come sopra, ma in tal caso sono eliminati dalla cache tutti i pacchetti scaricati, e non solo quelli non più necessari oppure obsoleti. Questo comando ingloba l'effetto del comando precedente, per cui un "apt-get autoclean" è superfluo.

In particolare saranno cancellati:

  • I file contenuti nella directory /var/cache/apt/archive/partial/
  • Tutti i file .deb contenuti nella directory /var/cache/apt/archive/
  • I file /var/cache/apt/pkgcache.bin e /var/cache/apt/srcpkgcache.bin
autoremove
# apt-get autoremove

Rimuove i pacchetti installati automaticamente e che non sono più necessari in quanto dipendenze solo di altri pacchetti rimossi.
Il messaggio con cui apt ci avverte della loro presenza è:

Il seguente pacchetto è stato installato automaticamente e non è più richiesto:
  nomepacchetto1 nomepacchetto2 ...
Usare "apt-get autoremove" per rimuoverlo.

La lista dei pacchetti installati con status di "autoremove" può essere visualizzata con:

$ aptitude '~i ~g'
download
$ apt-get download nomepacchetto

Preleva semplicemente dai repository il pacchetto del programma specificato senza installarlo sul sistema e lo copia nella directory corrente; molto comodo per ottenere il file binario .deb senza andare a cercarlo in giro per la Rete. Questo comando non necessita dei permessi di root.
Ad esempio:

$ apt-get download dpkg

scaricherà dai repository il pacchetto .deb relativo a dpkg.

changelog
$ apt-get changelog nomepacchetto

Comando molto comodo per visualizzare velocemente, attraverso il pager di default, il file che tiene traccia di tutti i cambiamenti introdotti per un determinato pacchetto (changelog).

Opzioni

--allow-unauthenticated

Permette l'installazione/aggiornamento di pacchetti provenienti da repository di cui non è stata installata la chiave pubblica. Prestare sempre molta attenzione quando si decide di installare qualcosa da repository non ufficiali. È un'impostazione sconsigliata che può rendere vulnerabile l'intero sistema.

-s, --simulate

Nessuna azione; effettua una simulazione degli eventi che si verificherebbero, ma non cambia realmente il sistema. Ad esempio:

# apt-get install pacchetto -s

oppure:

# apt-get dist-upgrade -s

o anche:

# apt-get autoremove -s

e così via.

-t, --target-release, --default-release

Permette in genere di aggiornare/installare i pacchetti specificati e le relative dipendenze in base alla distribuzione bersaglio, ad esempio:

# apt-get 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.

--no-install-recommends

Installa un pacchetto o esegue un upgrade senza installare automaticamente i pacchetti raccomandati. Ad esempio:

# apt-get install --no-install-recommends nomepacchetto
-u, --show-upgraded

Mostra un elenco dei pacchetti che saranno aggiornati.

-d, --download-only

Simile a "apt-get download" eccetto per il fatto che esegue il download di *tutti* i pacchetti coinvolti in un'operazione di installazione o aggiornamento. A operazione conclusa, questi pacchetti si troveranno nella directory /var/cache/apt/archives/ senza essere installati effettivamente sul sistema.
Questa opzione è molto comoda per scaricare (ma senza installare) automaticamente i pacchetti, magari con Cron, mentre si sta facendo tutt'altro.

# apt-get -d install nomepacchetto

oppure:

# apt-get -d upgrade

o anche:

# apt-get -d dist-upgrade
-V, --verbose-versions

Mostra il numero di versione completo dei pacchetti aggiornati e installati.

Sorgenti e compilazione

$ apt-get source pacchetto

Questo è il comando da utilizzare nel caso volessimo installare i sorgenti di un pacchetto.
NOTA BENE: i sorgenti così scaricati, una volta compilati, daranno origine ad un pacchetto .deb che andrà a sua volta installato! I sorgenti vengono scaricati nella directory da cui si è lanciato il comando.

$ apt-get build-dep pacchetto

Questo è un comando fondamentale, specie se si lavora molto con i sorgenti. Si preoccupa di soddisfare le dipendenze del pacchetto che andremo a compilare dopo aver eseguito apt-get source.

$ apt-get source pacchetto --compile

È il passo finale per la compilazione di un pacchetto deb. Lanciatelo dalla stessa directory in cui avete scaricato i sorgenti da compilare.

Easter egg

$ apt-get moo

Provare per vedere...

File di configurazione

È possibile definire le opzioni di apt-get 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 oppure in più file dal nome arbitrario in /etc/apt/apt.conf.d/.
Tutte le opzioni disponibili sono visibili nel file /usr/share/doc/apt/examples/configure-index.gz

Che si tratti del file apt.conf o di file posti in apt.conf.d/ è possibile usare in entrambi i casi due tipi di sintassi, ad esempio:

APT
{
	Default-Release "testing"; 
	Cache-Limit 24000000;
	Get
	{
		AutomaticRemove "true";
		Fix-Broken "true";
		Purge "true";
		Show-Upgraded "true";
	}
}
Acquire::http::Proxy "http://indirizzo_proxy:3142/";
   
APT::Default-Release "testing"; 
APT::Cache-Limit 24000000;
APT::Get::AutomaticRemove "true";
APT::Get::Fix-Broken "true";
APT::Get::Purge "true";
APT::Get::Show-Upgraded "true";
Acquire::http::Proxy "http://indirizzo_proxy:3142/";

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). Si noti che l'uso è soltanto a titolo di esempio, non è necessario definire una Default Release in condizioni normali e consigliate, ossia senza mescolare repository di release diverse.
  • La massima dimensione in byte per memorizzare le informazioni dei pacchetti disponibili nei vari sorgenti; maggiore il numero di repository specificato in sources.list maggiore sarà lo spazio occupato (questo parametro NON definisce lo spazio riservato alla memorizzazione dei pacchetti installati e/o scaricati).
  • Le opzioni figlie di Get sono utilizzate da apt-get e basta, salvo alcune eccezioni come AllowUnauthenticated che viene riconosciuto anche da aptitude (è considerato un sinonimo di Aptitude::CmdLine::Ignore-Trust-Violations).
    • Rimuove 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.
    • Quando un pacchetto viene rimosso questo viene completamente eliminato, come se si fosse usato il comando apt-get purge.
    • Mostra i pacchetti aggiornati; stampa un elenco di tutti i pacchetti che devono essere aggiornati.
  • Da specificare SOLO e soltanto se si è installato e configurato correttamente un proxy per la gestione dei pacchetti, come apt-cacher per esempio.
  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.


Approfondimenti

Manpages

man apt-get




Guida scritta da: Keltik   Debianized 60%
Estesa da:

Wtf

Verificata da:
Wtf
HAL 9000 11:25, 24 ago 2014 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized