Remediați „Nu se poate bloca directorul de administrare (/var/lib/dpkg/)” în Ubuntu


În timp ce folosesc comanda apt-get sau instrumentul relativ nou de gestionare a pachetelor APT în Ubuntu Linux sau derivatele sale, cum ar fi Linux Mint (pe care îl folosesc de fapt ca sistem de operare principal pentru făcând munca zilnică), este posibil să fi întâlnit eroarea – „nu se poate bloca directorul de administrare (/var/lib/dpkg/) este un alt proces care îl folosește ” pe linia de comandă.

Această eroare poate fi atât de enervantă, mai ales pentru noii utilizatori Linux (Ubuntu) care nu știu exact cauza erorii.

Mai jos este un exemplu, care arată eroarea fișierului de blocare în 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?

Rezultatul de mai jos este o altă posibilă instanță a aceleiași erori:

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?

Cum poți rezolva eroarea de mai sus în cazul în care te lovești de ea în viitor? Există mai multe moduri de a face față acestei erori, dar în acest ghid vom trece prin cele mai simple și probabil cele mai eficiente moduri de a o rezolva.

1. Găsiți și ucideți toate procesele apt-get sau apt

Rulați comanda de mai jos pentru a genera o listă cu toate procesele al căror nume cuprinde cuvântul apt, veți obține o listă care include toate apt sau apt-get< procesează folosind comenzile ps și grep împreună cu o conductă.

ps -A | grep apt

Pentru fiecare proces apt-get sau apt pe care îl puteți vedea în rezultatul comenzii de mai sus, opriți fiecare proces folosind comanda de mai jos.

Procesul ID (PID) se găsește în prima coloană din captura de ecran de mai sus.

sudo kill -9 processnumber
OR
sudo kill -SIGKILL processnumber

De exemplu, în comanda de mai jos, unde 9 este numărul semnalului pentru semnalul SIGKILL, va opri primul proces apt:

sudo kill -9 13431
OR
sudo kill -SIGKILL 13431

2. Ștergeți fișierele de blocare

Un fișier de blocare pur și simplu împiedică accesul la alt fișier(e) sau la unele date de pe sistemul dvs. Linux, acest concept este prezent în Windows și în alte sisteme de operare.

După ce rulați o comandă apt-get sau apt, este creat un fișier de blocare în oricare dintre aceste directoare /var/lib/apt/lists/, /var/lib/dpkg/ și /var/cache/apt/archives/.

Acest lucru ajută la evitarea întreruperii procesului apt-get sau apt care rulează deja de către un utilizator sau alte procese de sistem care ar trebui să funcționeze cu fișierele utilizate de către apt-get sau apt. Când procesul s-a terminat de executat, fișierul de blocare este apoi șters.

Important: în cazul în care o blocare încă iese din cele două directoare de mai sus fără a rula niciun proces apt-get sau apt vizibil, aceasta poate însemna că procesul a fost suspendat dintr-un motiv sau celălalt, prin urmare, trebuie să ștergeți fișierele de blocare pentru a șterge eroarea.

Mai întâi executați comanda de mai jos pentru a elimina fișierul de blocare din directorul /var/lib/dpkg/:

sudo rm /var/lib/dpkg/lock

Apoi forțați pachetele să reconfigureze astfel:

sudo dpkg --configure -a

Alternativ, ștergeți fișierele de blocare din /var/lib/apt/lists/ și directorul cache, după cum urmează:

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

Apoi, actualizați lista de surse de pachete după cum urmează:

sudo apt update
OR
sudo apt-get update

În concluzie, am parcurs două metode importante pentru a rezolva o problemă comună cu care se confruntă utilizatorii Ubuntu (și derivatele sale), în timp ce rulăm apt-get sau apt, precum și comenzi de aptitudini.

Aveți alte metode de încredere de partajat, menite să rezolve această eroare comună? Atunci contactați-ne prin formularul de feedback de mai jos.

În plus, ați putea la fel de bine să învățați cum să găsiți și să omorâți procesele care rulează și să citiți un ghid simplu pentru comenzile kill, pkill și killall pentru a termina un proces în Linux.