Při používání příkazu apt-get nebo relativně nového nástroje pro správu balíčků APT v Ubuntu Linuxu nebo jeho odvozeninách, jako je Linux Mint (který vlastně používám jako svůj primární operační systém pro každodenní práci), jste se mohli v příkazovém řádku setkat s chybou – „nelze uzamknout adresář pro správu (/var/lib/dpkg/), používá jej jiný proces“.
Tato chyba může být velmi nepříjemná zejména pro nové uživatele Linuxu (Ubuntu), kteří nemusí přesně vědět, co je její příčinou.
Níže je uveden příklad, který ukazuje chybu uzamčení souboru v Ubuntu 16. V tomto případě se jedná o chybu uzamčení souboru.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?
Níže uvedený výstup je dalším možným případem 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 vyřešit výše uvedenou chybu v případě, že na ni v budoucnu narazíte? Existuje několik způsobů, jak se s touto chybou (chybami) vypořádat, ale v tomto návodu si projdeme dva nejjednodušší a pravděpodobně nejefektivnější způsoby jejího řešení:
Najít a zabít všechny procesy apt-get nebo apt
Spusťte níže uvedený příkaz pro vygenerování seznamu všech procesů, jejichž název se skládá ze slova apt, pomocí příkazů ps
a grep spolu s pipeline získáte seznam zahrnující všechny procesy apt nebo apt-get.
$ ps -A | grep apt
Pro každý proces apt-get nebo apt, který vidíte ve výstupu výše uvedeného příkazu, zabijte každý proces pomocí níže uvedeného příkazu.
ID procesu (PID) najdete v prvním sloupci z výše uvedeného obrázku.
$ sudo kill -9 processnumberOR$ sudo kill -SIGKILL processnumber
Například v níže uvedeném příkazu, kde 9
je číslo signálu pro signál SIGKILL, bude zabit první proces apt:
$ sudo kill -9 13431OR$ sudo kill -SIGKILL 13431
Odstranění zámku Soubory
Zámek souboru jednoduše zabraňuje přístupu k jinému souboru (souborům) nebo některým datům v systému Linux, tento koncept je přítomen i v systému Windows a dalších operačních systémech.
Po spuštění příkazu apt-get nebo apt se vytvoří soubor zámku v některém z těchto adresářů /var/lib/apt/lists/, /var/lib/dpkg/ a /var/cache/apt/archives/.
To pomáhá zabránit tomu, aby již běžící proces apt-get nebo apt byl přerušen buď uživatelem, nebo jinými systémovými procesy, které by potřebovaly pracovat se soubory používanými apt-get nebo apt. Po dokončení provádění procesu se pak soubor zámku odstraní.
Důležité: V případě, že se zámek ve dvou výše uvedených adresářích stále ukončuje, aniž by byl spuštěn znatelný proces apt-get nebo apt, může to znamenat, že proces byl z toho či onoho důvodu zadržen, a proto je třeba soubory zámku odstranit, aby se chyba odstranila.
Nejprve proveďte níže uvedený příkaz pro odstranění souboru zámku v adresáři /var/lib/dpkg/
:
$ sudo rm /var/lib/dpkg/lock
Poté vynuťte přenastavení balíčku(ů) takto:
$ sudo dpkg --configure -a
Případně odstraňte soubory zámku v adresáři /var/lib/apt/lists/
a cache podle následujícího postupu:
$ sudo rm /var/lib/apt/lists/lock$ sudo rm /var/cache/apt/archives/lock
Dále aktualizujte seznam zdrojů balíčků následujícím způsobem:
$ sudo apt updateOR$ sudo apt-get update
Na závěr jsme si prošli dvě důležité metody, jak se vypořádat s častým problémem, se kterým se setkávají uživatelé Ubuntu (a jeho derivátů), při spouštění příkazů apt-get nebo apt a aptitude.
Máte nějaké další spolehlivé metody, o které byste se podělili, určené k řešení této běžné chyby? Pak se s námi spojte prostřednictvím níže uvedeného formuláře pro zpětnou vazbu.
Můžete se také dozvědět, 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 systému Linux.