Mens du bruger apt-get-kommandoen eller det relativt nye APT-pakkehåndteringsværktøj i Ubuntu Linux eller dets derivater som Linux Mint (som jeg faktisk bruger som mit primære styresystem til det daglige arbejde), er du måske stødt på fejlen – “unable to lock the administration directory (/var/lib/dpkg/) is another process using it” på kommandolinjen.
Denne fejl kan være så irriterende, især for nye Linux-brugere (Ubuntu), som måske ikke kender den præcise årsag til fejlen.
Nedenfor er et eksempel, der viser fejlen med låsefilen i Ubuntu 16.10:
tecmint@TecMint:~$ sudo apt install neofetch 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?
Udgangen nedenfor er et andet muligt eksempel på 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 fejl(e) på, men i denne vejledning vil vi gennemgå de to nemmeste og sandsynligvis mest effektive måder at løse den på.
Find og dræb alle apt-get eller apt-processer
Kør nedenstående kommando for at generere en liste over alle processer, hvis navn består af ordet apt, du vil få en liste inklusive alle apt- eller apt-get-processer ved at bruge ps
og grep-kommandoer sammen med en pipeline.
$ ps -A | grep apt
For hver apt-get- eller apt-proces, som du kan se i output fra kommandoen ovenfor, skal du dræbe hver proces ved hjælp af kommandoen nedenfor.
Proces-ID (PID) findes i den første kolonne fra skærmbilledet ovenfor.
$ sudo kill -9 processnumberOR$ sudo kill -SIGKILL processnumber
For eksempel i nedenstående kommando, hvor 9
er signalnummeret for SIGKILL-signalet, vil dræbe den første apt-proces:
$ sudo kill -9 13431OR$ sudo kill -SIGKILL 13431
Slet låsefilerne
En låsefil forhindrer simpelthen adgang til en anden fil(er) eller nogle data på dit Linux-system, dette koncept findes også i Windows og andre operativsystemer.
Når du kører en apt-get- eller apt-kommando, oprettes en låsefil under et af disse mapper /var/lib/apt/lists/, /var/lib/dpkg/ og /var/cache/apt/archives/.
Dette hjælper med at undgå, at apt-get- eller apt-processen, der allerede kører, bliver afbrudt af enten en bruger eller andre systemprocesser, der skulle arbejde med filer, der bruges af apt-get eller apt. Når processen er færdig med at udføre, slettes låsefilen derefter.
Vigtigt: I tilfælde af, at en lås stadig er ved at afslutte i de to mapper ovenfor, uden at der kører en mærkbar apt-get- eller apt-proces, kan det betyde, at processen blev holdt tilbage af en eller anden grund, og derfor skal du slette låsefilerne for at fjerne fejlen.
Først skal du udføre nedenstående kommando for at fjerne låsefilen i mappen /var/lib/dpkg/
:
$ sudo rm /var/lib/dpkg/lock
Dernæst skal du tvinge pakke(r) til at omkonfigurere som følger:
$ sudo dpkg --configure -a
Alternativt skal du slette låsefilerne i mappen /var/lib/apt/lists/
og cache-mappen som nedenfor:
$ sudo rm /var/lib/apt/lists/lock$ sudo rm /var/cache/apt/archives/lock
Næst skal du opdatere din liste over pakkekilder som følger:
$ sudo apt updateOR$ sudo apt-get update
Sammenfattende har vi gennemgået to vigtige metoder til at håndtere et almindeligt problem, som Ubuntu-brugere (og dets derivater) står over for, mens de kører apt-get eller apt samt aptitude-kommandoer.
Har du nogen andre pålidelige metoder til at dele beregnet til at håndtere denne almindelige fejl? Så kontakt os via feedbackformularen nedenfor.
Derudover kan du også lære, hvordan du finder og dræber kørende processer og læse en simpel guide til kill, pkill og killall kommandoer for at afslutte en proces i Linux.