Entrambi i metodi, dselect APT ed 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 del sistema, in modo che
possiate avere davanti agli occhi a quale punto dell'operazione si trova, e
quanto ancora si deve aspettare.
Prima di ciascuna operazione, eccetto l'aggiornamento della lista, APT compie
alcune operazioni per prepararsi, oltre a dei controlli dello stato del
sistema. In qualsiasi momento le stesse operazioni possono essere fatte con
apt-get check
La prima cosa che fa è leggere tutti i file dei pacchetti in memoria, usando
uno schema di caching 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, ed apt-get esce senza
eseguire alcuna operazione.
# apt-get check
Reading Package Lists... Done
Building Dependancy Tree... Done
You might want to run apt-get -f install' to correct these.
Sorry, but the following packages have unmet dependencies:
9fonts: Depends: xlib6g but it is not installed
uucp: Depends: mailx but it is not installed
blast: Depends: xlib6g (>= 3.3-5) but it is not installed
adduser: Depends: perl-base but it is not installed
aumix: Depends: libgpmg1 but it is not installed
debiandoc-sgml: Depends: sgml-base but it is not installed
bash-builtins: Depends: bash (>= 2.01) but 2.0-3 is installed
cthugha: Depends: svgalibg1 but it is not installed
Depends: xlib6g (>= 3.3-5) but it is not installed
libreadlineg2: Conflicts:libreadline2 (<< 2.1-2.1)
In questo esempio il sistema ha molti problemi, tra cui uno piuttosto serio con
la libreadlineg2. Per ciascun pacchetto che ha dipendenze non soddisfatte,
viene stampata una linea che indica il pacchetto che crea il problema e quali
problemi ci sono. Viene inclusa inoltre una breve spiegazione del perché il
pacchetto ha un problema di dipendenze.
Ci sono due modi in cui un sistema possa arrivare in uno stato problematico di
questo genere: il primo è causato dal fatto che dpkg possa mancare
alcune relazioni sottili tra pacchetti durante un aggiornamento del sistema[3]; il secondo è possibile se
l'installazione di un pacchetto fallisce, ed in questo caso è possibile che un
pacchetto venga scompattato senza che tutti quelli da cui dipende siano stati
installati.
La seconda possibilità è meno seria della prima, dato che APT gestisce l'ordine
di installazione dei pacchetti; in entrambi i casi l'opzione -f di
apt-get gli farà trovare una soluzione e lo farà continuare. Il
metodo APT di dselect comprende sempre l'opzione -f
per permettere di configurare facilmente anche i pacchetti con script errati.
Se viene usata però l'opzione -f per correggere un sistema in uno
stato molto problematico, è possibile che anche con l'opzione il programma
fallisca, subito o 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
operazioni da fare, ma ci sono alcuni elementi comuni: in tutti i casi gli
elenchi dipendono dallo stato finale delle cose, e tengono conto dell'opzione
-f e di altre attività rilevanti per il comando da eseguire.
The following extra packages will be installed:
libdbd-mysql-perl xlib6 zlib1 xzx libreadline2 libdbd-msql-perl
mailpgp xdpkg fileutils pinepgp zlib1g xlib6g perl-base
bin86 libgdbm1 libgdbmg1 quake-lib gmp2 bcc xbuffy
squake pgp-i python-base debmake ldso perl libreadlineg2
ssh
L'elenco dei pacchetti Extra mostra tutti i pacchetti che verranno installati o
aggiornati oltre a quelli indicati sulla linea di comando. Viene generato solo
per il comando install. I pacchetti elencati sono spesso il
risultato di un'operazione di auto installazione (Auto Install).
The following packages will be REMOVED:
xlib6-dev xpat2 tk40-dev xkeycaps xbattle xonix
xdaliclock tk40 tk41 xforms0.86 ghostview xloadimage xcolorsel
xadmin xboard perl-debug tkined xtetris libreadline2-dev perl-suid
nas xpilot xfig
L'elenco dei pacchetti da rimuovere (Remove) indica tutti i pacchetti che
verranno rimossi dal sistema. Può essere mostrato per una qualsiasi delle
operazioni, e deve sempre essere esaminato attentamente per assicurarsi che non
venga eliminato qualcosa di importante. Con l'opzione -f è
particolarmente probabile che vengano eliminati dei pacchetti, ed in questo
caso va fatta estrema attenzione. La lista può contenere dei pacchetti che
verranno rimossi perché sono già rimossi parzialmente, forse a causa di
un'installazione non terminata correttamente.
The following NEW packages will installed:
zlib1g xlib6g perl-base libgdbmg1 quake-lib gmp2 pgp-i python-base
L'elenco dei nuovi pacchetti installati (New) è semplicemente un appunto su
quello che accadrà. I pacchetti nell'elenco non sono al momento installati nel
sistema, ma lo saranno alla fine delle operazioni di APT.
The following packages have been kept back
compface man-db tetex-base msql libpaper svgalib1
gs snmp arena lynx xpat2 groff xscreensaver
In ogni caso in cui il sistema viene aggiornato nel suo insieme, c'è la
possibilità che non possano venire installate nuove versioni di alcuni
pacchetti, dato che potrebbero richiedere l'installazione di pacchetti non
presenti nel sistema, o entrare in conflitto con altri già presenti. In questo
caso, il pacchetto viene elencato nella lista di quelli trattenuti (Kept Back).
Il miglior modo per convincere i pacchetti elencati in questa lista è di
installarli con apt-get install o usare dselect per
risolvere i problemi.
A volte si può richiedere ad APT di installare un pacchetto che è stato
trattenuto; in questi casi viene stampato un messaggio di attenzione, che
avverte che il pacchetto verrà modificato. Questo dovrebbe accadere solo
durante operazioni di dist-upgrade o di install.
Infine, APT stamperà un riassunto di tutte le modifiche che accadranno.
206 packages upgraded, 8 newly installed, 23 to remove and 51 not upgraded.
12 packages not fully installed or removed.
Need to get 65.7M/66.7M of archives. After unpacking 26.5M will be used.
La prima linea del riassunto è semplicemente una versione ridotta di tutte le
liste, ed include il numero di aggiornamenti -- cioè dei pacchetti già
installati per cui sono disponibili nuove versioni. La seconda linea indica il
numero di pacchetti con problemi di configurazione, probabilmente in
conseguenza di un'installazione non andata a buon fine. La linea finale indica
i requisiti di spazio dell'installazione: i primi due numeri indicano
rispettivamente il numero di byte che devono essere trasferiti da posizioni
remote, ed il secondo la dimensione totale di tutti gli archivi necessari per
l'installazione. Il numero successivo indica la differenza in dimensione tra i
pacchetti già installati e quelli che lo saranno, ed è approssimativamente
equivalente allo spazio richiesto in /usr dopo l'installazione. Se si stanno
rimuovendo dei pacchetti, il valore può indicare lo spazio che verrà liberato.
Si possono generare altri resoconti usando l'opzione -u per mostrare i
pacchetti da aggiornare, ma sono simili all'esempio precedente.
Le linee che cominciano con Get vengono stampate quando APT inizia a
scaricare un file, e l'ultima linea indica il progresso dell'operazione. Il
primo valore in percentuale indica la percentuale totale 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 linea di stato viene ripetuta una volta per
ciascuna fase del download, 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. La prima parola dopo la parentesi quadra aperta è il nome
breve dell'oggetto che si sta scaricando, che per gli archivi è il nome del
pacchetto.
All'interno delle virgolette c'è una stringa informativa, che indica il
progresso della fase di negoziazione del download. 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 il download
viene rappresentato come 102/10.2k, che indica che sono stati
scaricati 102 byte di 10.2 kilobyte. 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 del processo di download, e le linee Get scorrono indietro
quando viene cominciato il download 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
dpkg una volta finito il download. dpkg porrà anche
alcune domande durante la manipolazione dei pacchetti, ed i pacchetti stessi
potranno farne altre. Prima di ciascuna domanda viene proposta una descrizione
di quello che sta per chiedere, e le domande sono troppo diverse per poter
essere discusse in maniera completa in questa occasione.