Vyhledávání na webu

Oprava „Nelze zamknout administrační adresář (/var/lib/dpkg/)“ v Ubuntu


Při používání příkazu apt-get nebo relativně nového nástroje pro správu balíčků APT v Ubuntu Linux nebo jeho derivátech, jako je Linux Mint (který ve skutečnosti používám jako svůj primární operační systém při každodenní práci), možná jste narazili na chybu – „nelze zamknout administrační adresář (/var/lib/dpkg/) je jiný proces, který jej používá na příkazový řádek.

Tato chyba může být tak nepříjemná zejména pro nové uživatele Linuxu (Ubuntu), kteří nemusí přesně znát příčinu chyby.

Níže je uveden příklad zobrazující chybu souboru zámku v Ubuntu 16.10:

tecmint@TecMint:~$ 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?

Níže uvedený výstup je další možný výskyt stejné chyby:

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?

Jak můžete vyřešit výše uvedenou chybu, pokud na ni v budoucnu narazíte? Existuje několik způsobů, jak se s touto chybou (chybami) vypořádat, ale v této příručce projdeme dvěma nejjednoduššími a pravděpodobně nejúčinnějšími způsoby, jak ji vyřešit.

1. Najděte a zabijte všechny procesy apt-get nebo apt

Spuštěním příkazu níže vygenerujte seznam všech procesů, jejichž název obsahuje slovo apt, získáte seznam obsahující všechny apt nebo apt-get< zpracovává pomocí příkazů ps a grep společně s kanálem.

ps -A | grep apt

U každého procesu apt-get nebo apt, který můžete vidět ve výstupu příkazu výše, ukončete každý proces pomocí příkazu níže.

Proces ID (PID) se nachází v prvním sloupci na snímku obrazovky výše.

sudo kill -9 processnumber
OR
sudo kill -SIGKILL processnumber

Například v příkazu níže, kde 9 je číslo signálu pro signál SIGKILL, zabije první proces apt:

sudo kill -9 13431
OR
sudo kill -SIGKILL 13431

2. Odstraňte soubory zámku

Soubor zámku jednoduše zabraňuje přístupu k dalším souborům nebo některým datům ve vašem systému Linux, tento koncept je přítomen také v Windows a dalších operačních systémech.

Jakmile spustíte příkaz apt-get nebo apt, vytvoří se soubor zámku v kterémkoli z těchto adresářů /var/lib/apt/lists/, /var/lib/dpkg/ a /var/cache/apt/archives/.

To pomáhá zabránit tomu, aby byl již spuštěný proces apt-get nebo apt přerušen uživatelem nebo jinými systémovými procesy, které by musely pracovat se soubory používanými apt-get nebo apt. Po dokončení procesu je soubor zámku odstraněn.

Důležité: V případě, že se zámek ve dvou výše uvedených adresářích stále opouští a není spuštěn žádný znatelný proces apt-get nebo apt, může to znamenat, že proces byl pozastaven z jednoho důvodu nebo druhý, proto musíte odstranit soubory zámku, abyste vymazali chybu.

Nejprve proveďte níže uvedený příkaz a odstraňte soubor zámku v adresáři /var/lib/dpkg/:

sudo rm /var/lib/dpkg/lock

Poté vynutit překonfigurování balíčků takto:

sudo dpkg --configure -a

Případně odstraňte soubory zámku v /var/lib/apt/lists/ a adresáři cache, jak je uvedeno níže:

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

Dále aktualizujte seznam zdrojů balíčků následovně:

sudo apt update
OR
sudo apt-get update

Na závěr jsme prošli dvěma důležitými metodami, jak se vypořádat s běžným problémem, s nímž se potýkají uživatelé Ubuntu (a jeho derivátů), při spuštění apt-get nebo apt a také aptitude příkazy.

Máte nějaké další spolehlivé metody ke sdílení určené k řešení této běžné chyby? Pak nás kontaktujte prostřednictvím formuláře pro zpětnou vazbu níže.

Kromě toho se možná budete chtít naučit, jak najít a zabít běžící procesy, a přečíst si jednoduchého průvodce příkazy kill, pkill a killall pro ukončení procesu v Linuxu.