Lagfærðu „Ekki tókst að læsa stjórnunarskránni (/var/lib/dpkg/)“ í Ubuntu


Þegar þú notar APT pakkastjórnunartólið í Ubuntu Linux eða afleiður þess eins og Linux Mint (sem ég nota í raun sem aðalstýrikerfið mitt til að vinna daglega vinnu), gætirðu hafa rekist á villuna - \getur ekki læst stjórnunarskránni (/ var/lib/dpkg/) er annað ferli sem notar það“ á skipanalínunni.

Þessi villa getur verið svo pirrandi sérstaklega fyrir nýja Linux (Ubuntu) notendur sem vita kannski ekki nákvæmlega orsök villunnar.

Hér að neðan er dæmi sem sýnir læsingarskráarvilluna í 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?

Úttakið hér að neðan er annað mögulegt dæmi um sömu villu:

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?

Hvernig geturðu leyst ofangreinda villu ef þú rekst á hana í framtíðinni? Það eru nokkrar leiðir til að takast á við þessa villu(r), en í þessari handbók munum við fara í gegnum tvær auðveldustu og líklega áhrifaríkustu leiðirnar til að leysa hana.

1. Finndu og drepðu alla apt-get eða apt ferli

Keyrðu skipunina hér að neðan til að grep skipanir ásamt leiðslu.

$ ps -A | grep apt

Fyrir hvert apt-get eða apt ferli sem þú getur séð í úttakinu á skipuninni hér að ofan, dreptu hvert ferli með því að nota skipunina hér að neðan.

Auðkenni ferlisins (PID) er að finna í fyrsta dálknum frá skjámyndinni hér að ofan.

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

Til dæmis, í skipuninni hér að neðan þar sem 9 er merkisnúmerið fyrir SIGKILL merkið, drepur fyrsta viðeigandi ferlið:

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

2. Eyddu læsingarskránum

Lásskrá kemur einfaldlega í veg fyrir aðgang að annarri skrá(m) eða einhverjum gögnum á Linux kerfinu þínu, þetta hugtak er til staðar í Windows og öðrum stýrikerfum líka.

Þegar þú keyrir apt-get eða apt skipun er læsaskrá búin til undir einhverri af þessum möppum /var/lib/apt/lists/, /var/lib/dpkg/ og /var/cache/apt/archives/.

Þetta hjálpar til við að koma í veg fyrir að apt-get eða apt ferlið sem þegar er í gangi verði truflað af annaðhvort notanda eða öðrum kerfisferlum sem þyrftu að vinna með skrár sem eru notaðar af apt-get eða apt. Þegar ferlinu er lokið er læsingarskránni eytt.

Mikilvægt: Ef lás er enn að fara út í möppunum tveimur hér að ofan án merkjanlegs apt-get eða apt ferli í gangi, getur það þýtt að ferlinu hafi verið haldið af einni eða annarri ástæðu, þess vegna þarftu að eyða læsaskránum til að hreinsa villuna.

Framkvæmdu fyrst skipunina hér að neðan til að fjarlægja læsingarskrána í /var/lib/dpkg/ möppunni:

$ sudo rm /var/lib/dpkg/lock

Þvingaðu síðan pakka/pakka til að endurstilla þannig:

$ sudo dpkg --configure -a

Að öðrum kosti skaltu eyða læsingarskrám í /var/lib/apt/lists/ og skyndiminni skrá eins og hér að neðan:

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

Næst skaltu uppfæra heimildalistann þinn fyrir pakka sem hér segir:

$ sudo apt update
OR
$ sudo apt-get update

Að lokum höfum við gengið í gegnum tvær mikilvægar aðferðir til að takast á við algengt vandamál sem notendur Ubuntu (og afleiður þess) standa frammi fyrir, á meðan keyrt er apt-get eða apt sem og aptitude skipanir.

Ertu með einhverjar aðrar áreiðanlegar aðferðir til að deila til að takast á við þessa algengu villu? Hafðu þá samband við okkur í gegnum athugasemdaformið hér að neðan.

Að auki gætirðu líka viljað læra kill, pkill og killall skipanir til að slíta ferli í Linux.