Fix "Kan ikke låse administrationskataloget (/ var/lib/dpkg /)" i Ubuntu


Mens du bruger APT-pakkehåndteringsværktøjet i Ubuntu Linux eller dets derivater såsom Linux Mint (som jeg faktisk bruger som mit primære operativsystem til dagligt arbejde), har du muligvis stødt på fejlen - “ude af stand til at låse administrationskataloget (/ var/lib/dpkg /) er en anden proces, der bruger den ”på kommandolinjen.

Denne fejl kan være så irriterende, især for nye Linux-brugere (Ubuntu), der måske ikke ved nøjagtigt årsagen til fejlen.

Nedenfor er et eksempel på låsefilfejl i 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?

Outputtet nedenfor er en anden mulig forekomst af den samme fejl:

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?

Hvordan kan du løse ovenstående fejl, hvis du støder på den i fremtiden? Der er flere måder at håndtere denne (e) fejl (er) på, men i denne vejledning gennemgår vi de to nemmeste og sandsynligvis de mest effektive måder at løse det på.

1. Find og dræb alle apt-get eller apt-processer

Kør kommandoen nedenfor for at grep kommandoer sammen med en pipeline.

$ ps -A | grep apt

For hver apt-get eller apt-proces, som du kan se i output af kommandoen ovenfor, skal du dræbe hver proces ved hjælp af kommandoen nedenfor.

Proces-id'et (PID) findes i den første kolonne fra skærmbilledet ovenfor.

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

For eksempel vil kommandoen nedenfor, hvor 9 er signalnummeret for SIGKILL-signalet, dræbe den første apt-proces:

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

2. Slet låsefiler

En låsefil forhindrer simpelthen adgang til en anden fil eller nogle data på dit Linux-system, dette koncept er også til stede i Windows og andre operativsystemer.

Når du kører en apt-get- eller apt-kommando, oprettes en låsefil under en af disse mapper/var/lib/apt/lists /,/var/lib/dpkg/og/var/cache/apt/archives /.

Dette hjælper med at undgå apt-get eller apt-processen, der allerede kører, fra at blive afbrudt af enten en bruger eller andre systemprocesser, der skal arbejde med filer, der bruges af apt-get eller apt. Når processen er udført, slettes låsefilen derefter.

Vigtigt: Hvis en lås stadig udløber i de to mapper ovenfor uden nogen mærkbar apt-get eller apt-proces, der kører, kan det betyde, at processen blev afholdt af den ene eller den anden grund, derfor skal du slette låsefilerne for at ryd fejlen.

Udfør først kommandoen nedenfor for at fjerne låsefilen i mappen /var/lib/dpkg/:

$ sudo rm /var/lib/dpkg/lock

Tving bagefter pakke (r) til at omkonfigurere sådan:

$ sudo dpkg --configure -a

Alternativt kan du slette låsefilerne i /var/lib/apt/lists/ og cache-biblioteket som nedenfor:

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

Derefter skal du opdatere listen over pakkekilder som følger:

$ sudo apt update
OR
$ sudo apt-get update

Afslutningsvis har vi gennemgået to vigtige metoder til at håndtere et almindeligt problem, som brugerne af Ubuntu (og dets derivater) står over for, mens vi kører apt-get eller apt samt aptitude-kommandoer.

Har du andre pålidelige metoder til at dele, der er beregnet til at tackle denne almindelige fejl? Så kontakt os via feedbackformularen nedenfor.

Derudover kan du lige så godt ønske at lære kill, pkill og killall-kommandoer for at afslutte en proces i Linux.