Ricerca nel sito web

Risolto il problema con "Impossibile bloccare la directory di amministrazione (/var/lib/dpkg/)" in Ubuntu


Mentre utilizzo il comando apt-get o il relativamente nuovo strumento di gestione dei pacchetti APT in Ubuntu Linux o i suoi derivati come Linux Mint (che attualmente utilizzo come sistema operativo principale per durante il lavoro quotidiano), potresti aver riscontrato l'errore: "impossibile bloccare la directory di amministrazione (/var/lib/dpkg/) è un altro processo che la utilizza " su la riga di comando.

Questo errore può essere molto fastidioso soprattutto per i nuovi utenti Linux (Ubuntu) che potrebbero non conoscere esattamente la causa dell'errore.

Di seguito è riportato un esempio che mostra l'errore del file di blocco in Ubuntu 16.10:

tecmint@TecMint:~$ sudo apt install neofetch
[sudo] password for tecmint:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg), is another process using it?

L'output seguente è un'altra possibile istanza dello stesso errore:

E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/ 
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) 
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

Come puoi risolvere l'errore di cui sopra nel caso in cui lo riscontrassi in futuro? Esistono diversi modi per gestire questi errori, ma in questa guida esamineremo i due modi più semplici e probabilmente più efficaci per risolverli.

1. Trova e uccidi tutti i processi apt-get o apt

Esegui il comando seguente per generare un elenco di tutti i processi il cui nome comprende la parola apt, otterrai un elenco comprensivo di tutti gli apt o apt-get< elabora utilizzando i comandi ps e grep insieme a una pipeline.

ps -A | grep apt

Per ogni processo apt-get o apt che puoi vedere nell'output del comando sopra, termina ogni processo utilizzando il comando seguente.

Il processo ID (PID) si trova nella prima colonna dello screenshot qui sopra.

sudo kill -9 processnumber
OR
sudo kill -SIGKILL processnumber

Ad esempio, nel comando seguente dove 9 è il numero del segnale SIGKILL, ucciderà il primo processo apt:

sudo kill -9 13431
OR
sudo kill -SIGKILL 13431

2. Eliminare i file di blocco

Un file di blocco impedisce semplicemente l'accesso ad altri file o ad alcuni dati sul tuo sistema Linux, questo concetto è presente anche in Windows e in altri sistemi operativi.

Una volta eseguito un comando apt-get o apt, viene creato un file di blocco in una qualsiasi di queste directory /var/lib/apt/lists/, /var/lib/dpkg/ e /var/cache/apt/archives/.

Ciò aiuta a evitare che il processo apt-get o apt già in esecuzione venga interrotto da un utente o da altri processi di sistema che dovrebbero lavorare con i file utilizzati da apt-get o apt. Al termine dell'esecuzione del processo, il file di blocco viene eliminato.

Importante: nel caso in cui un blocco sia ancora in uscita nelle due directory sopra senza che apt-get o un processo apt evidente sia in esecuzione, ciò potrebbe significare che il processo è stato sospeso per un motivo o l'altro, pertanto è necessario eliminare i file di blocco per eliminare l'errore.

Per prima cosa esegui il comando seguente per rimuovere il file di blocco nella directory /var/lib/dpkg/:

sudo rm /var/lib/dpkg/lock

Successivamente forzare la riconfigurazione dei pacchetti in questo modo:

sudo dpkg --configure -a

In alternativa, eliminare i file di blocco nella directory /var/lib/apt/lists/ e cache come di seguito:

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock

Successivamente, aggiorna l'elenco delle origini dei pacchetti come segue:

sudo apt update
OR
sudo apt-get update

In conclusione, abbiamo esaminato due metodi importanti per affrontare un problema comune affrontato dagli utenti di Ubuntu (e dei suoi derivati), durante l'esecuzione di apt-get o apt così come di comandi attitudinali.

Avete altri metodi affidabili da condividere per gestire questo errore comune? Allora contattaci tramite il modulo di feedback qui sotto.

Inoltre, potresti anche voler imparare come trovare e uccidere i processi in esecuzione e leggere una semplice guida ai comandi kill, pkill e killall per terminare un processo in Linux.