Capitolo 4. L'interfaccia

Indice

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

Both that APT dselect method and apt-get share the same interface. It is a simple system that generally tells you what it will do and then goes and does it. [2] After printing out a summary of what will happen APT then will print out some informative status messages so that you can estimate how far along it is and how much is left to do.

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-get -f 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.

There are two ways a system can get into a broken state like this. The first is caused by dpkg missing some subtle relationships between packages when performing upgrades. [3]. The second is if a package installation fails during an operation. In this situation a package may have been unpacked without its dependents being installed.

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] The dselect method actually is a set of wrapper scripts to apt-get. The method actually provides more functionality than is present in apt-get alone.

[3] APT however considers all known dependencies and attempts to prevent broken packages