Guida dell'utente di APT



Versione 3.1.3



Indice

1. Descrizione generale
1.1. Anatomia del sistema dei pacchetti
2. apt-get
3. DSelect
4. L'interfaccia
4.1. Avvio
4.2. Il resoconto sullo stato
4.2.1. L'elenco dei pacchetti extra
4.2.2. I pacchetti da rimuovere
4.2.3. L'elenco dei nuovi pacchetti installati
4.2.4. L'elenco dei pacchetti bloccati
4.2.5. Messaggi di avvertimento sui pacchetti bloccati
4.2.6. Resoconto finale
4.3. La visualizzazione dello stato
4.4. Dpkg
   

Il pacchetto APT al momento contiene due sezioni, il metodo APT per dselect e l'interfaccia utente a riga di comando apt-get; entrambi forniscono un modo per installare e rimuovere pacchetti, così come per scaricarne di nuovi da Internet.

   

Il sistema dei pacchetti di Debian contiene un gran numero di informazioni associate a ciascun pacchetto, per garantire che si integri facilmente ed in maniera pulita nel sistema. La sua caratteristica più importante è il sistema di dipendenze.

   

Il sistema di dipendenze permette ai singoli programmi di fare uso degli elementi condivisi del sistema, quali le librerie. Semplifica l'inserimento delle porzioni di un programma usate raramente in pacchetti separati per ridurre il numero di cose che l'utente medio deve installare. Inoltre, rende possibile avere più di una scelta per cose quali i programmi di trasferimento della posta elettronica, i server X e così via.

   

Il primo passo per capire il sistema di dipendenze è la comprensione del concetto di dipendenza semplice: un pacchetto richiede che un altro sia installato insieme ad esso per poter funzionare.

   

Ad esempio, mailcrypt è un'estensione di emacs che aiuta a cifrare i messaggi di posta elettronica GPG. Se GPG non è installato, mailcrypt è inutile, quindi mailcrypt ha una dipendenza semplice da GPG. Inoltre, dato che si tratta di un'estensione di emacs, mailcrypt ha anche una dipendenza semplice da emacs, senza il quale è totalmente inutile.

   

L'altro tipo di dipendenza importante da capire è la dipendenza di conflitto; significa che un pacchetto, quando è installato insieme ad un altro, non funziona e potrebbe potenzialmente causare seri danni al sistema. Come esempio, si consideri un programma di trasporto della posta, quale sendmail, exim o qmail: non è possibile averne installati due contemporaneamente, perché entrambi hanno bisogno di restare in ascolto sulla rete per ricevere la posta. Tentare di installarne due danneggerebbe seriamente il sistema, quindi ciascun programma di trasporto della posta ha una dipendenza di conflitto verso tutti gli altri.

   

Come ulteriore complicazione, c'è la possibilità per un pacchetto di far finta di essere un altro. Ad esempio, exim e sendmail sono dal lato pratico identici, dato che entrambi consegnano la posta e utilizzano un'interfaccia comune. Il sistema dei pacchetti quindi fornisce un mezzo con cui entrambi possono dichiarare di essere programmi di trasporto della posta; perciò entrambi dichiarano di fornire un mail-transport-agent e gli altri pacchetti che hanno bisogno di un programma di trasferimento della posta possono dipendere da mail-transport-agent. Quando si cerca di modificare a mano i pacchetti, questo può portare a moltissima confusione.

   

In un determinato momento una singola dipendenza può essere soddisfatta dai pacchetti già installati o può non esserlo; APT cerca di risolvere i problemi di dipendenze fornendo svariati algoritmi automatici, che aiutano a selezionare i pacchetti da installare.

   

apt-get fornisce un modo semplice di installare i pacchetti dalla riga di comando. Diversamente da dpkg, apt-get non tratta i file .deb, ma utilizza il vero nome dei pacchetti e può installare archivi .deb solo da una fonte.

   

La prima [1] cosa da fare prima di usare apt-get è scaricare gli elenchi dei pacchetti dalle fonti in modo che il programma sappia quali pacchetti sono disponibili. Lo si fa con apt-get update. Ad esempio,

   
# apt-get update
Scaricamento di: http://ftp.de.debian.org/debian/ stable/binary-i386/ Packages
Scaricamento di: http://llug.sep.bnl.gov/debian/ testing/contrib Packages
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze... Fatto
   

Una volta aggiornato l'elenco, si possono usare svariati comandi:

   
upgrade

Upgrade tenterà di fare un aggiornamento indolore del sistema completo, senza installare mai nuovi pacchetti o rimuoverne di esistenti, e senza mai aggiornare un pacchetto se ciò ne rende altri difettosi. Può essere usato quotidianamente per fare un aggiornamento relativamente sicuro del sistema. Upgrade elencherà tutti i pacchetti che non avrà potuto aggiornare, cosa che in genere significa che questi dipendono da nuovi pacchetti o che vanno in conflitto con altri. Per forzare la loro installazione si può usare dselect o apt-get install.

install

Install viene usato per installare i pacchetti per nome. Il pacchetto viene automaticamente scaricato ed installato; questo può essere utile se già se ne conosce il nome e non si vuole entrare in un'interfaccia grafica per selezionarlo. Al comando si possono passare anche più pacchetti, che saranno tutti scaricati. Install cerca automaticamente di risolvere i problemi di dipendenze dei pacchetti elencati, stampa un riassunto e chiede conferma se devono essere modificati altri pacchetti che non siano quelli sulla riga di comando.

dist-upgrade

Dist-upgrade fa un aggiornamento completo ed è progettato in modo da rendere semplici gli aggiornamenti tra i rilasci di Debian. Usa un algoritmo sofisticato per determinare il miglior insieme di pacchetti da installare, aggiornare e rimuovere per migrare alla versione più recente la maggior parte del sistema possibile. In alcune situazioni può essere vantaggioso usare dist-upgrade invece di dedicare tempo a risolvere manualmente le dipendenze con dselect. Una volta completato il lavoro di dist-upgrade, si può usare dselect per installare eventuali pacchetti che sono stati tralasciati.

È importante controllare attentamente cosa intende fare dist-upgrade, dato che le sue decisioni a volte possono essere abbastanza sorprendenti.

   

apt-get ha diverse opzioni per la riga di comando, che sono documentate dettagliatamente nella sua pagina di manuale, apt-get(8). L'opzione più utile è -d, che non installa i file scaricati; se il sistema deve scaricare un gran numero di pacchetti, non è bene iniziare ad installarli nel caso qualcosa dovesse andare storto. Quando si usa -d, gli archivi scaricati possono essere installati semplicemente eseguendo di nuovo lo stesso comando senza l'opzione -d.



   

[1] Se si sta usando un server proxy http, si deve prima ancora impostare la variabile d'ambiente http_proxy; vedere sources.list(5).

   

Il metodo APT di dselect fornisce tutte le funzionalità del sistema APT con l'interfaccia grafica di selezione dei pacchetti dselect. dselect viene usato per selezionare i pacchetti da installare o rimuovere, ed APT fa l'effettiva installazione.

   

Per abilitare il metodo APT si deve selezionare [A]ccess in dselect e scegliere il metodo APT; verrà chiesto un insieme di fonti (Sources), cioè di posti da cui scaricare gli archivi. Possono essere siti Internet remoti, mirror locali di Debian o CD-ROM; ogni fonte può fornire una parte dell'intero archivio Debian, ed APT le combinerà automaticamente insieme per formare un insieme completo di pacchetti. Se si ha un CD-ROM allora è una buona idea indicarlo per primo e poi specificare un mirror, in modo da avere accesso alle ultime versioni con le soluzioni dei bug. APT in questo modo userà automaticamente i pacchetti sul CD-ROM prima di scaricarli da Internet.

   
   Set up a list of distribution source locations

 Please give the base URL of the debian distribution.
 The access schemes I know about are: http file

 For example:
      file:/mnt/debian,
      https://deb.debian.org/debian,
      http://deb.debian.org/debian,


 URL [http://llug.sep.bnl.gov/debian]:
   

La configurazione delle fonti inizia chiedendo la base dell'archivio Debian, proponendo in modo predefinito un mirror HTTP; successivamente viene chiesta la distribuzione da scaricare.

   
 Please give the distribution tag to get or a path to the
 package file ending in a /. The distribution
 tags are typically something like: stable unstable testing

 Distribution [stable]:
   

The distribution refers to the Debian version in the archive, stable refers to the latest released version and unstable refers to the developmental version.

   
 Please give the components to get
 The components are typically something like: main contrib non-free non-free-firmware

 Components [main contrib non-free non-free-firmware]:
   

L'elenco delle componenti indica la lista di sottodistribuzioni da scaricare. Ciascuna distribuzione viene suddivisa in base alle licenze del software: la componente main contiene pacchetti liberi secondo le DFSG, mentre contrib e non-free contengono software che ha diverse restrizioni sull'uso e sulla distribuzione.

   

Si può aggiungere un qualsiasi numero di fonti, e lo script di configurazione continuerà a chiedere fino a che non sono state specificate tutte quelle desiderate.

   

Prima di cominciare a usare dselect è necessario aggiornare l'elenco dei pacchetti disponibili selezionando [U]pdate dal menù: si tratta di un sovrainsieme di ciò che fa apt-get update, che rende le informazioni scaricate disponibili a dselect. [U]pdate deve essere usato anche se prima è stato eseguito apt-get update.

   

Si può a questo punto continuare selezionando i pacchetti desiderati usando [S]elect e poi installando con [I]nstall. Se si usa il metodo APT, i comandi [C]onfig e [R]emove non hanno significato, dato che entrambe le fasi sono contenute in [I]nstall.

   

In modo predefinito APT rimuoverà automaticamente i file (.deb) dei pacchetti che sono stati installati con successo. Per modificare questo comportamento, inserire Dselect::clean "prompt"; in /etc/apt/apt.conf.

   

Sia il metodo APT per dselect sia apt-get condividono la stessa interfaccia; si tratta di un sistema semplice che indica in genere cosa sta per fare, e poi lo fa.[2] Dopo la stampa di un riassunto delle operazioni che saranno fatte, APT stampa dei messaggi informativi sullo stato, in modo da poter avere un'idea del punto a cui arrivato e di quanto ci sia ancora da fare.

   

Prima di ogni operazione, eccetto update, APT compie alcune operazioni per preparare il suo stato interno; fa inoltre dei controlli sullo stato del sistema. In qualsiasi momento le stesse operazioni possono essere fatte con apt-get check.

   
# apt-get check
Lettura elenco pacchetti... Fatto
Generazione albero delle dipendenze... Fatto
   

La prima cosa che fa è leggere tutti i file dei pacchetti in memoria; APT usa un sistema di cache in modo da rendere la stessa operazione più veloce la seconda volta che la si fa. Se alcuni dei file dei pacchetti non vengono trovati, sono ignorati e viene stampato un avvertimento all'uscita di apt-get.

   

L'operazione finale consiste in un'analisi dettagliata delle dipendenze del sistema: viene controllato che tutte le dipendenze dei singoli pacchetti installati o non scompattati siano soddisfatte. Se vengono individuati dei problemi, viene stampato un resoconto, e apt-get esce senza eseguire alcuna operazione.

   
# apt-get check
Lettura elenco pacchetti... Fatto
Generazione albero delle dipendenze... Fatto
È utile eseguire "run apt --fix-broken install" per correggere ciò.
I seguenti pacchetti hanno dipendenze non soddisfatte:
  9fonts: Dipende: xlib6g ma non è installato
  uucp: Dipende: mailx ma non è installato
  blast: Dipende: xlib6g (>= 3.3-5) ma non è installato
  adduser: Dipende: perl-base ma non è installato
  aumix: Dipende: libgpmg1 ma non è installato
  debiandoc-sgml: Dipende: sgml-base ma non è installato
  bash-builtins: Dipende: bash (>= 2.01) ma la versione 2.0-3 è installata
  cthugha: Dipende: svgalibg1 ma non è installato
           Dipende: xlib6g (>= 3.3-5) ma non è installato
  libreadlineg2: Va in conflitto: libreadline2 (<< 2.1-2.1)
   

In questo esempio il sistema ha molti problemi, tra cui uno piuttosto serio con libreadlineg2. Per ciascun pacchetto che ha dipendenze non soddisfatte, viene stampata una riga che indica il pacchetto con il problema e quali dipendenze non sono soddisfatte. Viene inclusa inoltre una breve spiegazione del perché il pacchetto ha un problema di dipendenze.

   

Ci sono due modi in cui un sistema può arrivare in uno stato problematico di questo genere: il primo avviene se dpkg non ha ravvisato alcune relazioni delicate tra i pacchetti durante un aggiornamento.[3] Il secondo è possibile se l'installazione di un pacchetto fallisce; in questo caso è possibile che un pacchetto venga scompattato senza che tutti quelli da cui dipende siano stati installati.

   

La seconda situazione è molto meno seria della prima, dato che APT pone alcune restrizioni sull'ordine di installazione dei pacchetti. In entrambi i casi l'opzione -f di apt-get farà sì che APT trovi una soluzione possibile e possa continuare. Il metodo APT di dselect comprende sempre l'opzione -f per permettere di continuare facilmente anche in caso di script dei manutentori errati.

   

Tuttavia, se l'opzione -f viene usata per correggere un sistema in uno stato molto problematico causato da una situazione del primo tipo, è possibile che l'operazione fallisca subito o che fallisca durante la sequenza di installazione. In entrambi i casi è necessario usare dpkg a mano (probabilmente usando delle opzioni di forzatura) per correggere quanto basta per poter fare continuare APT.

   

Prima di procedere, apt-get presenterà un resoconto delle operazioni che sta per fare. In genere tale resoconto varierà con il tipo di operazione da fare, ma ci sono svariati elementi comuni: in tutti i casi gli elenchi riflettono lo stato finale delle cose, e tengono conto dell'opzione -f e di altre attività rilevanti per il comando da eseguire.

   

Durante lo scaricamento degli archivi e dei file dei pacchetti APT stampa una serie di messaggi di stato.

   
# apt-get update
Scaricamento di:1 http://ftp.de.debian.org/debian/ stable/main Packages
Scaricamento di:2 http://llug.sep.bnl.gov/debian/ testing/contrib Packages
Trovato http://llug.sep.bnl.gov/debian/ testing/main Packages
Scaricamento di:4 http://ftp.de.debian.org/debian/ unstable/binary-i386/ Packages
Scaricamento di:5 http://llug.sep.bnl.gov/debian/ testing/non-free Packages
11% [5 testing/non-free `Waiting for file' 0/32.1k 0%] 2203b/s 1m52s
   

Le righe che cominciano con Scaricamento di vengono stampate quando APT inizia a scaricare un file, mentre l'ultima riga indica il progresso dell'operazione. Il primo valore in percentuale nella riga di progresso indica la percentuale totale scaricata di tutti i file; dato che la dimensione dei file Package non è nota, purtroppo a volte apt-get update fa una stima poco accurata.

   

La sezione successiva della riga di stato viene ripetuta una volta per ciascuna istanza di scaricamento, ed indica l'operazione in corso, insieme ad alcune informazioni utili su cosa stia accadendo. A volte questa sezione contiene solamente Forking, che significa che il sistema operativo sta caricando il modulo per lo scaricamento. La prima parola dopo la parentesi quadra aperta è il numero dello scaricamento come mostrato nelle righe della cronologia. La parola successiva è il nome breve dell'oggetto che si sta scaricando, che per gli archivi è il nome del pacchetto.

   

All'interno delle virgolette singole c'è una stringa informativa, che indica il progresso della fase di negoziazione dello scaricamento. Tipicamente comincia con Connecting, procede con Waiting for file e poi con Downloading o Resuming; il valore finale è il numero di byte che sono stati scaricati dal sito remoto. Una volta cominciato lo scaricamento, viene rappresentato come 102/10.2k, che indica che sono stati scaricati 102 byte su 10,2 kilobyte attesi. La dimensione totale viene sempre espressa in notazione a quattro cifre, per risparmiare spazio. Dopo la dimensione viene indicato un indicatore progressivo della percentuale del file. Il penultimo elemento è la velocità istantanea media, che viene aggiornata ogni 5 secondi e riflette la velocità di trasferimento dei dati in quel periodo. Infine, viene visualizzato il tempo stimato per il trasferimento, che viene aggiornato periodicamente e riflette il tempo necessario per completare tutte le operazioni alla velocità di trasferimento mostrata.

   

La visualizzazione dello stato viene aggiornata ogni mezzo secondo per fornire un feedback costante sul processo di scaricamento, e le righe Get scorrono in alto quando viene avviato lo scaricamento di un nuovo file. Dato che la visualizzazione dello stato viene costantemente aggiornata, non è adatta per essere registrata in un file; per non visualizzarla si può usare l'opzione -q.