Wyszukiwanie w witrynie

Napraw „Nie można zablokować katalogu administracyjnego (/var/lib/dpkg/)” w Ubuntu


Podczas korzystania z polecenia apt-get lub stosunkowo nowego narzędzia do zarządzania pakietami APT w Ubuntu Linux lub jego pochodnych, takich jak Linux Mint (którego właściwie używam jako podstawowego systemu operacyjnego wykonując codzienną pracę), mogłeś napotkać błąd – „nie można zablokować katalogu administracyjnego (/var/lib/dpkg/) to inny proces go używający ” na wiersz poleceń.

Ten błąd może być bardzo irytujący, szczególnie dla nowych użytkowników Linuksa (Ubuntu), którzy mogą nie znać dokładnie przyczyny błędu.

Poniżej znajduje się przykład pokazujący błąd pliku blokady w 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?

Poniższe dane wyjściowe to kolejny możliwy przypadek tego samego błędu:

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 rozwiązać powyższy błąd, jeśli wpadniesz na niego w przyszłości? Istnieje kilka sposobów radzenia sobie z tymi błędami, ale w tym przewodniku omówimy dwa najłatwiejsze i prawdopodobnie najskuteczniejsze sposoby rozwiązania tego problemu.

1. Znajdź i zabij wszystkie procesy apt-get lub apt

Uruchom poniższe polecenie, aby wygenerować listę wszystkich procesów, których nazwa składa się ze słowa apt. Otrzymasz listę zawierającą wszystkie procesy apt lub apt-get< przetwarza za pomocą poleceń ps i grep wraz z potokiem.

ps -A | grep apt

Dla każdego procesu apt-get lub apt, który możesz zobaczyć w wynikach powyższego polecenia, zabij każdy proces za pomocą poniższego polecenia.

Proces ID (PID) znajduje się w pierwszej kolumnie powyższego zrzutu ekranu.

sudo kill -9 processnumber
OR
sudo kill -SIGKILL processnumber

Na przykład w poniższym poleceniu, gdzie 9 jest numerem sygnału dla sygnału SIGKILL, pierwszy proces apt zakończy się:

sudo kill -9 13431
OR
sudo kill -SIGKILL 13431

2. Usuń pliki blokady

Plik blokady po prostu uniemożliwia dostęp do innych plików lub niektórych danych w systemie Linux. Ta koncepcja jest obecna także w Windowsie i innych systemach operacyjnych.

Po uruchomieniu polecenia apt-get lub apt plik blokady jest tworzony w dowolnym z tych katalogów /var/lib/apt/lists/, /var/lib/dpkg/ i /var/cache/apt/archives/.

Pomaga to uniknąć przerwania już uruchomionego procesu apt-get lub apt przez użytkownika lub inne procesy systemowe, które musiałyby pracować z plikami używanymi przez apt-get lub apt. Po zakończeniu wykonywania procesu plik blokady jest następnie usuwany.

Ważne: jeśli w dwóch powyższych katalogach nadal trwa zamykanie blokady i nie ma uruchomionego procesu apt-get ani apt, może to oznaczać, że proces został wstrzymany z jednego powodu lub inny, dlatego musisz usunąć pliki blokady, aby usunąć błąd.

Najpierw wykonaj poniższe polecenie, aby usunąć plik blokady z katalogu /var/lib/dpkg/:

sudo rm /var/lib/dpkg/lock

Następnie wymuś ponowną konfigurację pakietów w następujący sposób:

sudo dpkg --configure -a

Alternatywnie usuń pliki blokady z katalogu /var/lib/apt/lists/ i pamięci podręcznej, jak poniżej:

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

Następnie zaktualizuj listę źródeł pakietów w następujący sposób:

sudo apt update
OR
sudo apt-get update

Podsumowując, omówiliśmy dwie ważne metody radzenia sobie z częstym problemem, z jakim borykają się użytkownicy Ubuntu (i jego pochodnych), podczas uruchamiania apt-get lub apt, a także polecenia umiejętności.

Czy masz inne niezawodne metody udostępniania, które pomogą Ci uporać się z tym częstym błędem? Skontaktuj się z nami, korzystając z poniższego formularza opinii.

Ponadto równie dobrze możesz chcieć dowiedzieć się, jak znaleźć i zakończyć działające procesy, oraz przeczytać prosty przewodnik po poleceniach kill, pkill i killall w celu zakończenia procesu w systemie Linux.