Ištaisykite „Nepavyko užrakinti administravimo katalogo (/ var/lib/dpkg /)“ Ubuntu


Naudodamiesi „APT“ paketų valdymo įrankiu „Ubuntu Linux“ arba jo dariniais, tokiais kaip „Linux Mint“ (kurį aš iš tikrųjų naudoju kaip savo pagrindinę operacinę sistemą kasdien dirbdamas), galbūt susidūrėte su klaida - „nepavyko užrakinti administravimo katalogo (/ var/lib/dpkg /) yra kitas procesas, jį naudojant “komandinėje eilutėje.

Ši klaida gali būti tokia erzina, ypač naujiems „Linux“ („Ubuntu“) vartotojams, kurie galbūt tiksliai nežino klaidos priežasties.

Žemiau yra pavyzdys, rodantis užrakto failo klaidą „Ubuntu 16.10“:

[email :~$ 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?

Žemiau pateiktas išvestis yra dar vienas galimas tos pačios klaidos atvejis:

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?

Kaip galite išspręsti minėtą klaidą, jei ateityje susiduriate su ja? Yra keletas būdų, kaip pašalinti šią (-as) klaidą (-as), tačiau šiame vadove mes apžvelgsime du lengviausius ir tikriausiai efektyviausius būdus, kaip ją išspręsti.

1. Raskite ir nužudykite visus apt-get arba apt procesus

Paleiskite toliau pateiktą komandą, kad grepuotumėte komandas kartu su vamzdynu.

$ ps -A | grep apt

Užmuškite kiekvieną procesą naudodami žemiau esančią komandą kiekvienam apt-get arba apt procesui, kurį galite pamatyti anksčiau pateiktos komandos išvestyje.

Proceso ID (PID) yra pirmame aukščiau esančio ekrano kopijos stulpelyje.

$ sudo kill -9 processnumber
OR
$ sudo kill -SIGKILL processnumber

Pvz., Žemiau esančioje komandoje, kur 9 yra SIGKILL signalo numeris, bus nužudytas pirmasis apt procesas:

$ sudo kill -9 13431
OR
$ sudo kill -SIGKILL 13431

2. Ištrinkite užrakto failus

Užrakto failas paprasčiausiai užkerta kelią prieigai prie kito (-ų) failo (-ų) ar kai kurių jūsų „Linux“ sistemos duomenų, ši sąvoka yra ir „Windows“ bei kitose operacinėse sistemose.

Paleidus apt-get arba apt komandą, užrakto failas sukuriamas bet kuriame iš šių katalogų/var/lib/apt/lists /,/var/lib/dpkg/ir/var/cache/apt/archives /.

Tai padeda išvengti apt-get arba apt vykstančio proceso, kurio jau vykdo, nenutrūkti nei vartotojo, nei kitų sistemos procesų, kurie turėtų dirbti su failais, kuriuos naudoja apt-get arba apt. Kai procesas bus baigtas, užrakto failas bus ištrintas.

Svarbu: Jei užrakinimas vis dar išlieka dviejuose aukščiau esančiuose kataloguose, nevykdant pastebimo apt-get ar apt proceso, tai gali reikšti, kad procesas vyko dėl vienų ar kitų priežasčių, todėl norint ištrinti, reikia ištrinti užrakto failus. išvalykite klaidą.

Pirmiausia atlikite žemiau esančią komandą, kad pašalintumėte užrakto failą kataloge /var/lib/dpkg/:

$ sudo rm /var/lib/dpkg/lock

Vėliau priversti paketą (-us) taip pertvarkyti:

$ sudo dpkg --configure -a

Arba ištrinkite užrakto failus /var/lib/apt/lists/ ir talpyklos kataloge, kaip nurodyta toliau:

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

Tada atnaujinkite savo paketų šaltinių sąrašą taip:

$ sudo apt update
OR
$ sudo apt-get update

Apibendrinant, mes apėjome du svarbius metodus, kaip išspręsti bendrą problemą, su kuria susiduria „Ubuntu“ (ir jos dariniai) vartotojai, vykdydami „apt-get“ arba „apt“ ir „aptitude“ komandas.

Ar turite kokių nors kitų patikimų metodų, kuriais galėtumėte pasidalinti, kad išspręstumėte šią bendrą klaidą? Tada susisiekite su mumis naudodami toliau pateiktą atsiliepimų formą.

Be to, galbūt norėsite išmokti komandų „kill“, „pkill“ ir „killall“, kad nutrauktumėte procesą sistemoje „Linux“.