lunedì 14 gennaio 2013

Ubuntu updates: Somma hash non corrispondente

Il gestore dei pacchetti di Ubuntu (apt) risulta molto comodo per cercare, installare e aggiornare pacchetti senza dover ricorrere alla ricerca delle nuove versioni e senza dover ricorrere all'installazione manuale.
Le informazioni sui pacchetti disponibili, con la loro versione, sono contenute in appositi file di sistema che, al momento della verifica della presenza di aggiornamenti (ad esempio mediante update-manager o apt-get update), vengono confrontati con file simili presenti sul server (noto con il nome di repository).

Può succedere che, durante l'aggiornamento delle informazioni sui pacchetti disponibili, uno dei file contenente tali informazioni si danneggi (ad esempio per un download incompleto dovuto a qualche sorta di errore). Questo causerà un successivo problema nei tentativi di aggiornamento in quanto il sistema non sarà più in grado di confrontare le versioni dei pacchetti installati (ovvero quella locale) con quella dei pacchetti disponibili (quella presente sul server), pertanto tutti i pacchetti che fanno riferimento al server con la lista dei pacchetti danneggiata non potranno essere aggiornati.

Il messaggio di errore che verrà visualizzato (sia utilizzando apt-get, che update-manager) sarà di questo tipo:

W: Impossibile recuperare bzip2:/var/lib/apt/lists/partial/[nome_file]  Somma hash non corrispondente

Come si risolve?

La risoluzione di questo problema è decisamente più semplice di quello che sembra: basta cancellare i file contenenti la lista delle informazioni dei pacchetti installati. Per farlo basta aprire il terminale e digitare:

$sudo rm -r /var/lib/apt/lists/* -vf

Se non sai come si utilizza il terminale consulta la guida Utilizzare il terminale.

Proviamo ora a scaricare la lista dei pacchetti aggiornata e vediamo che succede, dando sempre da terminale il comando

$sudo apt-get update

il messaggio di errore non dovrebbe essere più visualizzato e dovrebbe essere possibile scaricare ed aggiornare tutti i pacchetti!

EDIT: Continui a visualizzare il messaggio?

A volte il messaggio viene visualizzato anche se i repository sorgente sono danneggiati. Per risolvere il problema è sufficiente aprire il programma Software e aggiornamenti (accessibile tramite la dash di Ubuntu, oppure dalle Impostazioni di sistema) e, nella schermata principale, cambiare la voce del campo Scaricare da: selezionando l'opzione Server principale. In questo modo gli aggiornamenti verranno scaricati dal server principale di Ubuntu e non da quello italiano, che a volte contiene file che generano i problemi.
Dopo aver scelto l'opzione corretta sarà necessario ricaricare la lista dei pacchetti. Il messaggio di errore non dovrebbe più comparire.