Capitolo 4. L'interfaccia

Indice

4.1. Avvio
4.2. Il resoconto sullo stato
4.3. La visualizzazione dello stato
4.4. Dpkg

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-non-US/ stable/non-US/ 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-non-US/ 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.

APT usa dpkg per installare gli archivi e passerà all'interfaccia di dpkg una volta completati gli scaricamenti. dpkg porrà anche alcune domande durante l'elaborazione dei pacchetti, ed i pacchetti stessi potranno farne altre. Prima di ciascuna domanda viene proposta di solito una descrizione di ciò che viene chiesto, e le domande sono troppo diverse per poter essere discusse in maniera completa in questa occasione.



[2] Il metodo dselect è in effetti un insieme di script wrapper per apt-get. Il metodo fornisce di fatto più funzionalità di quanto siano presenti nel solo apt-get.

[3] APT tuttavia considera tutte le dipendenze note e cerca di evitare che i pacchetti siano difettosi.