Correggere ‘Impossibile impostare il blocco /var/lib/dpkg/lock’
Può capitare che Ubuntu mostri improvvisamente un errore non decifrabile a primo sguardo: il sistema vi segnalerà di non poter impostare e/o acquisire il blocco “/var/lib/dpkg/lock” all’atto dell’installazione o durante gli aggiornamenti (che sia con apt-get, con aptitude, con USC, con GDebi, con dpkg o con aptURL) di questo o quel pacchetto, impedendovi di utilizzare tutto il sistema di packaging finché non riavviate il sistema.
Cosa significa? Tutto il sistema degli installer .deb di Rasbian – in pratica dpkg, che sta alla base di tutto – è stato progettato per far sì che le operazioni di installazione, disinstallazione, aggiornamento e quant’altro avvengano esattamente una per volta, escludendo così l’eventuale possibilità di conflitti di dipendenze, conflitti di versione ed installazioni a metà che potrebbero compromettere la stabilità e l’affidabilità di questo sistema. Nel momento in cui viene avviata una di queste operazioni, lo stesso dpkg cerca di creare un file – esattamente in /var/lib/dpkg – che si chiama lock, che serve ad avvisare che “è in corso un’operazione sui pacchetti e non possono esserne iniziate altre”. Qualora questo file esistesse già, automaticamente dpkg capirà che è in corso un’altra operazione sui pacchetti, si bloccherà, e ci mostrerà un messaggio di errore.
Le cause di questo problema fondamentalmente possono essere due:
- Cercate di installare/disinstallare/aggiornare pacchetti mentre è già in corso un’operazione del genere all’interno del sistema (ad es. tentate di utilizzare apt-get mentre scaricate gli aggiornamenti di sistema con il tool grafico);
- un’installazione/disinstallazione/aggiornamento precedente non è andato a buon fine, per via di un blocco improvviso del programma, di un crash momentaneo del sistema o di qualsiasi altro “intoppo”;
Come già potrete immaginare, risolvere il problema nel primo caso è piuttosto semplice: vi toccherà attendere il completamento dell’operazione precedente (per i motivi che vi ho già spiegato) e, successivamente, iniziarne una nuova. Mi raccomando: non forzate l’interruzione dell’operazione precedente, altrimenti potreste finire dritti dritti nel secondo caso.
Nel secondo caso, invece, le cose si complicano un pochino: ci sono casi in cui un riavvio del sistema corregge tutto, ma ci sono anche casi in cui riavviare il sistema non basta per correggere il tutto. E poi… riavviare il computer per una cosa del genere è comunque una gran noia ? Una soluzione c’è: basterà eliminare manualmente il file e rendere di nuovo consistente il database di dpkg.
Una raccomandazione: utilizzate questo metodo con molta parsimonia, e controllate – prima di procedere – che non vi siano effettivamente altre installazioni in corso!
In primis eliminiamo il file lock, con il comando
sudo rm /var/lib/dpkg/lock
Ora ricostruiamo il database di dpkg con il comando
sudo dpkg --configure -a
Ed eliminiamo eventuali tracce di installazioni a metà/dipendenze irrisolte (se ne restano), con il comando
sudo apt-get -f install
A questo punto il problema sarà risolto, e potrete ricominciare l’aggiornamento o l’installazione di nuovi pacchetti nel sistema.