Vejledninger

Fix: Kunne ikke åbne låsefilen / var / lib / dpkg / lock

At få den ikke kunne åbne låsefilen / var / lib / dpkg / lock-fejlmeddelelse kan være forvirrende, fordi det meget godt kan spørge, om du er rod med det samme, selvom du kørte en opdateringskommando med sudo-præfikset. Denne fejlkommando vises næsten på alt, hvad der bruger apt-get pakkehåndtering. Uanset om du opdaterer en stationær eller bærbar computer, der kører en af ​​de forskellige versioner af Ubuntu eller en Raspberry Pi med Raspbian Debian-spin, kan du muligvis finde ud af, at det kan være et problem på nogen af ​​disse platforme.

Ikke desto mindre er rettelsen ret enkel. Du kan normalt ignorere alt, der spørger dig, om du er rod eller ej, og gå direkte til hjertet af problemet, hvilket er relateret til to processer, der forsøger at få adgang til en låst fil på samme tid.

Metode 1: Sørg for, at sudo kan få adgang til alle dele af kommandoen

Hvis du skulle køre sudo apt-get update && apt-get upgrade, kan du muligvis få denne fejl, da den anden proces ikke har den rette autoritet til at få adgang til / var / lib / dpkg / lock-filen.

Prøv i stedet at køre sudo apt-get opdatering && sudo apt-get upgrade for at se om det gør nogen forskel. Hvis det gør det, er dit problem allerede løst, og det var kun fordi du ikke gav den anden proces tilstrækkelige tilladelser til at få adgang til filen. Husk, at denne kommando opdaterer og derefter opgraderer alle dine pakker, så det kan bede dig om at godkende den, og det kan tage et stykke tid at køre.

Ellers er problemet allerede behandlet fuldstændigt, og du behøver ikke gøre noget andet.

Metode 2: Fjernelse af / var / lib / dpkg / lock-filen

De, der bruger curl, wget eller en anden kommando, der downloader en fil diskret, kan også være nødt til at forordne den kommando med sudo, hvis de arbejder fra Raspbian, da dette i nogle tilfælde tager pladsen til apt-get. De, der arbejder med ren Debian, Xubuntu, Lubuntu, Linux Mint og andre lignende desktop / laptop-orienterede, behøver ikke bekymre sig om dette, men det kan være værd at prøve igen.

Hvis dette stadig ikke fungerede, skal du muligvis kontrollere, at du ikke har et andet program, der prøver at få adgang til filen, mens du kører din opdatering. Prøv at bruge sudo lsof / var / lib / dpkg / lås for at se om der kører andre processer, der har det åbent. Hvis du har åbnet det et eller andet sted, kan du bare lukke applikationen.

Husk at have læsning og skriveadgang til en applikation til at åbne denne fil ved udvidelse betyder, at programmet skal have rodrettigheder, så du skal bruge rodrettigheder for at lukke programmet. Du kan endda prøve at kigge gennem Task Manager-applikationen, hvis du bruger et grafisk skrivebordsmiljø, der understøtter denne funktion. Højreklik blot på den fornærmende proces, og luk, hvis du har tilladelse til det. Prøv også kill eller killall-kommandoerne fra kommandolinjen.

Du kan nu prøve at køre dine apt-get-kommandoer igen og se om det gør nogen forskel, men du behøver ikke gøre noget andet, hvis det havde været tilfældet. Hvis du stadig har problemer, kan du prøve at fjerne låsefilerne direkte. Selvom dette skal ses som en sidste udvej, forårsager det normalt ikke nogen problemer relateret til apt-get-programmet. Du vil stadig gerne udtømme andre metoder, før du gør dette, da det kan ødelægge apt-systemet.

At genstarte hjælper nogle gange, men hvis du er på en konstant server eller en Raspbian-enhed, er dette muligvis ikke en levedygtig mulighed. Prøv at løbe sudo rm / var / lib / dpkg / lås && sudo rm / var / lib / apt / lister / lås, som frigør de bestemte filer, som apt ser på, når du kører det. Sørg for at være forsigtig med navnene på disse filer, da kørsel af rm som root er ødelæggende.

Forudsat at du har gjort det efter kun at have udtømt de andre muligheder, kan du prøve at køre dine opdateringskommandoer igen og se hvad der sker. Du burde ikke have yderligere problemer, fordi filerne ikke længere ville eksistere på det tidspunkt, selvom apt-get-rutinerne vil være i stand til at genopbygge dem, mens de kører.