När du använder kommandot apt-get eller det relativt nya pakethanteringsverktyget APT i Ubuntu Linux eller dess derivat, t.ex. Linux Mint (som jag faktiskt använder som mitt primära operativsystem för att utföra det dagliga arbetet), kan du ha stött på felet – ”unable to lock the administration directory (/var/lib/dpkg/) is another process using it” på kommandoraden.
Detta fel kan vara så irriterande, särskilt för nya Linuxanvändare (Ubuntu) som kanske inte vet exakt vad felet beror på.
Nedan följer ett exempel som visar felet med låsta filer 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?
Utmatningen nedan är ett annat möjligt exempel på samma fel:
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?
Hur kan du lösa ovanstående fel om du stöter på det i framtiden? Det finns flera sätt att hantera det här felet eller de här felen, men i den här guiden kommer vi att gå igenom de två enklaste och förmodligen mest effektiva sätten att lösa det.
Hitta och döda alla apt-get- eller apt-processer
Kör kommandot nedan för att generera en lista över alla processer vars namn består av ordet apt, du kommer att få en lista som innehåller alla apt- eller apt-get-processer genom att använda ps
och grep-kommandon tillsammans med en pipeline.
$ ps -A | grep apt
För varje apt-get- eller apt-process som du kan se i utmatningen av kommandot ovan, dödar du varje process med hjälp av kommandot nedan.
Process-id (PID) finns i den första kolumnen från skärmdumpen ovan.
$ sudo kill -9 processnumberOR$ sudo kill -SIGKILL processnumber
I kommandot nedan, där 9
är signalnumret för signalen SIGKILL, dödas till exempel den första apt-processen:
$ sudo kill -9 13431OR$ sudo kill -SIGKILL 13431
Släck filerna
En låst fil förhindrar helt enkelt åtkomst till en annan fil/andra filer eller vissa data på ditt Linux-system, det här konceptet finns även i Windows och andra operativsystem.
När du kör ett apt-get- eller apt-kommando skapas en låsfil under någon av dessa kataloger /var/lib/apt/lists/, /var/lib/dpkg/ och /var/cache/apt/archives/.
Detta hjälper till att undvika att apt-get- eller apt-processen som redan körs avbryts av antingen en användare eller andra systemprocesser som skulle behöva arbeta med filer som används av apt-get eller apt. När processen har avslutats raderas sedan låsfilen.
Viktigt: Om ett lås fortfarande avslutas i de två katalogerna ovan utan att någon märkbar apt-get- eller apt-process körs, kan det betyda att processen hölls kvar av en eller annan anledning, därför måste du radera låsfilerna för att rensa felet.
Först utför du kommandot nedan för att ta bort låsfilen i katalogen /var/lib/dpkg/
:
$ sudo rm /var/lib/dpkg/lock
Därefter tvingar du paketet/paketen att konfigurera om på följande sätt:
$ sudo dpkg --configure -a
Alternativt raderar du låsfilerna i katalogerna /var/lib/apt/lists/
och cache enligt nedan:
$ sudo rm /var/lib/apt/lists/lock$ sudo rm /var/cache/apt/archives/lock
Nästan uppdaterar du listan över paketkällor på följande sätt:
$ sudo apt updateOR$ sudo apt-get update
Slutningsvis har vi gått igenom två viktiga metoder för att hantera ett vanligt problem som Ubuntu-användare (och dess derivat) möter när de kör apt-get eller apt samt aptitude-kommandon.
Har du några andra pålitliga metoder att dela med dig av som är avsedda för att hantera detta vanliga fel? Ta då kontakt med oss via feedbackformuläret nedan.
Du kanske dessutom vill lära dig hur du hittar och dödar processer som körs och läsa igenom en enkel guide till kommandona kill, pkill och killall för att avsluta en process i Linux.