Molte volte, durante l’installazione / l’aggiornamento di un pacchetto dalla riga di comando (utilizzando apt-get
o apt
) in Ubuntu, otteniamo questo errore: E: impossibile bloccare la directory di amministrazione (/ var / lib / dpkg /). Dal punto di vista di un principiante, è un errore complesso, poiché i nuovi utenti per lo più non sono a conoscenza della directory “/ var / lib / dpkg /” e di cosa ha a che fare con l’operazione corrente che stanno eseguendo.
Tecnicamente, l’errore viene lanciato dal sistema in più scenari e uno dovrebbe davvero occuparsi di come risolve questo problema. In questo articolo discuteremo tutti questi aspetti relativi a questo errore e come puoi eliminarlo in sicurezza.
Impossibile bloccare (/ var / lib / dpkg /) – diagnosi del problema
Ogni volta che si verifica questo errore, il primo passaggio dovrebbe essere leggere attentamente la descrizione dell’errore. Di solito contiene alcuni suggerimenti cruciali e che fanno risparmiare tempo. Ad esempio, le seguenti schermate mostrano il comando “apt-get install” che genera errori simili.
Tuttavia, se guardi più da vicino, noterai che il testo tra parentesi nella prima riga e il testo dopo la virgola nella seconda riga sono diversi in entrambi gli scenari, rendendo chiaro che l’errore nel primo scenario ha qualcosa da fare con i permessi dell’utente, mentre nel secondo scenario è correlato al file di blocco temporaneamente non disponibile.
Se stai riscontrando un errore relativo all’autorizzazione (come mostrato nella prima immagine sopra), è molto probabile che l’utente che esegue il comando “apt-get” o “apt” non abbia privilegi sufficienti e il comando è stato eseguito senza sudo
. Una volta che il comando viene eseguito con i privilegi di root, l’errore scomparirà.
Tuttavia, se si tratta di un errore relativo al blocco, sono necessarie ulteriori indagini.
Cos’è / var / lib / dpkg /?
“/ Var / lib / dpkg /” può essere pensato come la directory di lavoro per il gestore di pacchetti “dpkg”, che a sua volta è in realtà il motore dietro “apt-get” (così come gli strumenti “apt” e “aptitude”) . Ogni volta che si utilizzano questi strumenti per installare o rimuovere software, bloccano il database dei pacchetti (creando un file “lock”) prima di eseguire l’operazione effettiva, cosa che in realtà viene eseguita ottenendo il blocco per “/ var / lib / dpkg / “Directory. Questo passaggio consente di evitare il danneggiamento dei dati o l’interruzione di un’operazione in corso eseguita da un altro processo.
Supponendo che tu abbia compreso il concetto sopra spiegato, esaminiamo ora i passaggi dell’indagine.
Passaggio 1: verifica se è presente un altro processo che blocca il blocco
Ora dovrebbe sembrare abbastanza logico, giusto? E per fare questo, puoi usare l’aiuto del buon vecchio ps
comando e reindirizza il suo output al file grep
comando in modo da dedicare meno tempo alla ricerca di ciò che desideri. Ad esempio, ecco un comando che ti consente di trovare se un processo “apt”, “apt-get” o “aptitude” è già in esecuzione:
ps aux | grep apt
Passaggio 2: attendere un po ‘e quindi agire
Se effettivamente c’è un comando che ha già acquisito il blocco, dovresti idealmente attendere che venga completato e rilasciare il blocco. Tuttavia, se il comando impiega più tempo del previsto e sei sicuro che sia bloccato da qualche parte, puoi andare avanti e ucciderlo usando il disponibile kill
o killall
comandi (maggiori informazioni su di essi qui). Questo dovrebbe risolvere il problema che stai affrontando.
Una cosa degna di nota è che non è mai consigliabile uccidere direttamente un processo “dpkg”: potrebbe danneggiare il database dei pacchetti. Sto sottolineando questo punto perché ora sai che strumenti come “apt” e “apt-get” invocano “dpkg” internamente, quindi è del tutto possibile che tu possa pensare di uccidere il processo “dpkg” se lo noti in “ps “Output del comando.
Eliminare i processi avviati eseguendo i comandi apt, apt-get o aptitude generalmente molto più sicuri.
Passaggio 3: quando l’output del comando “ps” non aiuta
Tieni presente che oltre agli strumenti da riga di comando come apt e apt-get, anche alcune applicazioni basate su GUI come Software Center o Update Manager acquisiscono questo blocco.
Nota: se ricevi l’errore relativo al blocco subito dopo aver avviato Ubuntu, è del tutto possibile che la tua operazione si sovrapponga al polling automatico avviato dal gestore degli aggiornamenti. Aspettare un po ‘dovrebbe risolvere il problema in questo caso.
Tornando alle applicazioni basate su GUI di cui parlavamo, un’altra opzione utile e che fa risparmiare tempo è quella di utilizzare il fuser
comando.
Con “fuser” è sufficiente conoscere il file a cui si accede (“/ var / lib / dpkg / lock” nel nostro caso) e si può terminare il processo accedendo a quel file anche se non si sa quale sia il processo. Per esempio:
sudo fuser -cuk /var/lib/dpkg/lock
Tieni presente che il file fuser
comando non rilascerà il blocco acquisito dal processo che hai appena ucciso, quindi dovrai farlo manualmente:
sudo rm -f /var/lib/dpkg/lock
Nota: per “rilasciare il blocco“Significa semplicemente eliminare il file” lock “in modo che altri processi possano”acquisire la serratura“Ricreandolo.
Potrebbe anche essere necessario eseguire i seguenti due comandi:
sudo fuser -cuk /var/cache/apt/archives/lock; sudo rm -f /var/cache/apt/archives/lock
Suggerimento importante: non eliminare mai i file di blocco come primo passaggio: questa dovrebbe essere solo l’ultima risorsa.
Conclusione
In generale, è sempre bene capire il motivo del problema prima di andare avanti e risolverlo. Cercare ciecamente soluzioni per risolvere un problema non ti aiuterà mai: potresti riuscire in alcuni casi, ma il più delle volte ti ritroverai in un casino ancora più grande, specialmente se il sistema operativo è Linux.
Hai mai affrontato l’errore di cui abbiamo discusso qui? Come l’hai risolto? Lascia la tua risposta nei commenti.