Otrzymuję ten błąd podczas próby użycia apt-get
:
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 mogę to naprawić?
apt
package-management
dpkg
La Ode Adam Saputra
źródło
źródło
sudo lsof /var/lib/dpkg/lock
aby znaleźć proces, który jest właścicielem pliku blokady (jeśli jest pusty, załóż, że blokada pozostała z poprzedniego rozruchu i może byćsudo rm
d), a następnie rozważ wykonaniesudo kill -9 <PID>
(get <PID> zlsof
wyniku.root <pid> <ppid> 0 15:58 ? 00:00:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held install
, który wydaje się uruchamiać apt update przy każdym włączeniu komputera. W zależności od wielkości aktualizacji (która często odpowiada temu, jak dawno temu używałem tego komputera po raz ostatni), może to potrwać od 1 do 10 minut. Następnie blokada jest zwalniana do ręcznych instalacji i aktualizacji apt. Spróbuj:sudo ps aux|grep apt
lub `sudo ps aux | grep bez nadzoru.Odpowiedzi:
Powinno to być stosowane w ostateczności. Jeśli użyjesz tego niedbale, możesz skończyć z uszkodzonym systemem. Zanim to zrobisz, najpierw wypróbuj inne odpowiedzi .
Możesz usunąć plik blokady za pomocą następującego polecenia:
Może być również konieczne usunięcie pliku blokady w katalogu pamięci podręcznej
Następnie spróbuj ponownie otworzyć Synaptic.
źródło
Widzę, że prawie wszystkie odpowiedzi zalecają usunięcie blokady. Nie polecam robienia tego jako pierwszego kroku; może jeśli nie ma alternatywy. Blokada jest umieszczana, gdy uruchomiony jest proces apt, i jest usuwana po zakończeniu procesu. Jeśli istnieje blokada bez widocznego procesu, może to oznaczać, że proces utknął z jakiegoś powodu.
Jeśli spróbujesz
lub
które wychwytują procesy zawierające
apt
przynajmniej słowo . Jeśli zobaczyszapt-get
proces lubaptitude
proces, który wygląda na zablokowany, możesz spróbowaća jeśli to nie zadziała spróbuj
To powinno zakończyć proces i może usunąć blokadę. Zabicie
apt
lubaptitude
proces jest nieszkodliwe, chyba że faktycznie znajduje się w trakcie instalacji pakietu. W każdym razie, jeśli proces się zatrzyma, prawdopodobnie nie masz wyboru, ale go zabić.dpkg
Bezpośrednie zabicie procesu, jeśli jest obecne, nie jest dobrym pomysłem, ponieważ jeślidpkg
jest aktywne, prawdopodobnie manipuluje pakietową bazą danych, a zabicie go może pozostawić bazę danych pakietu w niespójnym stanie; tj. zepsuty.Zabicie
apt-get
lubaptitude
proces jest ogólnie znacznie bezpieczniejsze.źródło
dpkg
było dobrym pomysłem, ponieważ zwykledpkg
manipuluje się bezpośrednio pakietową bazą danych, co może spowodować uszkodzenie.dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
przysudo apt-get dist-upgrade
ponownym uruchomieniu . Uruchomienie polecenia rozwiązało problem. Kocham Nixa!killall apt-get
robi to samo co twojeps
/kill
combo.sudo dkpg --configure -a
po zabiciu nieuczciwego procesu apt, aby wszystko wróciło do normy.Usuń
/var/lib/dpkg/lock
plik i wymuś rekonfigurację pakietu.Po tym powinno działać.
źródło
sudo
- wykonaj polecenie jako root,rm
- usuń plik. Może spróbujsudo rm /var/cache/apt/archives/lock
Otrzymasz tę wiadomość, jeśli zapomnisz użyć
sudo
podczas wykonywania polecenia apt.W przeciwnym razie jest to znak, że coś innego instaluje lub usuwa oprogramowanie i zablokowało apt apt podczas wykonywania działań. Programy, które mogą to zrobić, to:
WAŻNE: wypróbuj poniższe tylko w ostateczności, ponieważ może to spowodować awarię systemu. Najpierw spróbuj zabić dowolną działającą instancję
apt
lubaptitude
zgodnie z opisem w odpowiedzi Faheema .Możesz wymusić blokadę poprzez usunięcie pliku, ale nie jest to zalecane bez uprzedniego zamknięcia programu, który bezpiecznie trzyma blokadę , ponieważ możesz spowodować uszkodzenie lub przerwanie instalacji (źle). Polecenie dostarczone przez João powinno zamknąć program przechowujący blokadę, a następnie usunąć blokadę, ale nie ochroni cię przed przerwaniem instalacji:
I to samo polecenie może być użyte do blokady apt cache:
źródło
sudo fuser -cuk /var/cache/apt/archives/lock
bezpośrednio zrestartowałem komputer.apt-get
jest teraz odblokowany.Najbardziej prawdopodobnym sposobem na osiągnięcie tego jest:
sudo apt-get install whatever
a linia poleceń
apt
pokrywa się zupdate-manager
automatycznym odpytywaniem.Więc jeśli spróbujesz ponownie za kilka minut, to powinno to naprawić.
źródło
sudo apt-get install
mógł działać.Tylko jeden program może przytrzymać blokadę. Upewnij się, że nie biegniesz aptitude, synaptic lub biegły. Zamknij program i uruchom go ponownie, powinno działać. Możesz mieć otwarte okno synaptic lub otwarte okno terminalu z uruchomionym apt-get, lub mieć uruchomionego menedżera aktualizacji. Sprawdź go i sprawdź, czy którykolwiek z nich jest uruchomiony, jeśli którykolwiek oni biegną blisko i spróbuj ponownie.
Wypróbuj to polecenie w terminalu, aby znaleźć to, co działa
Uwaga:
Jeśli to nic nie wydrukuje, wpisz następujące polecenie w terminalu, aby usunąć blokadę
Teraz możesz zainstalować dowolne pakiety.
źródło
pgrep -f 'apt|adept|dpkg'
jest znacznie krótszy.pgrep -a 'apt|adept|dpkg'
jest to lepszy krótszy odpowiednik.Do tej pory najlepszym sposobem, aby działał bez przerywania możliwej instalacji w tle (co może się zdarzyć po usunięciu pliku blokady), jest zatrzymanie usługi za pomocą apt:
Błąd:
Rozwiązanie:
Po aktualizacji systemu sugeruję ponowne włączenie go, ponieważ błąd blokujący można naprawić za pomocą aktualizacji.
sudo systemctl start apt-daily.timer
Nie zweryfikowałem, że ten błąd został naprawiony po aktualizacji. Dodam nowy komentarz, gdy tylko go zweryfikuję
źródło
Przede wszystkim powinniśmy sprawdzić, jaki proces utworzył plik blokady, używając
lsof
:lub w innej sytuacji, gdy
/var/lib/apt/lists/lock
jest problematyczne:Dane wyjściowe będą zbliżone do:
Następnie należy sprawdzić, co commad robi, możemy go znaleźć przy użyciu
ps
,pgrep
etc; polecenie jestapt-get
więc uruchamiane:-a
Przełącznik wymienia całą komendę dla mnie, w moim przypadku jest to:widzimy, że działa
update
podkomenda, mógłbym też uruchomić coś takiego:który produkuje:
W tym przypadku będę czekać na jakąś minutę zasób zostać uwolniony, a jeśli po 2 lub 3 minut problem nadal istnieje lub polecenie było coś, że nie obchodzi, czy nie był szkodliwy dla układu (jak ten
apt-get update
) wysłaćSIGTERM
do proces:Powinien wykonać pracę, jeśli nie, wyślę
SIGINT
tym razem (To jak naciśnięcie CTRL+ C):Jeśli to też nie zadziała, powinniśmy wysłać
SIGHUP
(kill -1
), a na koniec, jeśli nic nie działa, po prostu zabijam proces:lub
Następnie usuwam zajęte zasoby:
źródło
/var/lib/dpkg/lock
zamiast/var/lib/apt/lists/lock
to plik w pytaniu.pgrep
ipkill
.dpkg --configure -a
może być również potrzebnaTen błąd może być spowodowany przez Menedżera aktualizacji, który próbuje automatycznie odświeżyć listę pakietów w tle, zwykle zaraz po zalogowaniu, blokując w ten sposób katalog.
W takim przypadku poczekaj kilka sekund (lub więcej, jeśli ostatnia aktualizacja była dawno temu), aby ją ukończyć lub uruchom Menedżera aktualizacji, aby sprawdzić status.
źródło
ps
kilka razy zobaczyłem, żedpkg
aktualizowałem cały ładunek rzeczy i czekałem cierpliwie, aż wszystko się skończy . Następnie uruchomiłem narzędzie do aktualizacji oprogramowania, dopóki wszystko nie było aktualne, zanim spróbowałem zainstalować coś nowego.Stanie się tak, jeśli „Update Manager” działa równolegle w celu sprawdzenia aktualizacji lub instalacji, ponieważ proces instalacji blokuje. Jeśli napotykasz ten sam błąd bez uruchomionego „Menedżera aktualizacji”, musisz go usunąć
/var/lib/dgkg/lock
, a na pewno nie możesz tego zrobić ręczniedziała w porządku. Pobrano z: https://askubuntu.com/a/15469/68707
źródło
Nie bądź tak szybki, aby coś usunąć, może to całkowicie uszkodzić system; raczej poczekaj, aż aktualnie instalujący lub odinstalowujący program zakończy swoje zadanie, a następnie uzyskasz dostęp. Jeśli uważasz, że obecnie nic nie instaluje się ani nie odinstalowuje, po prostu uruchom ponownie system za pomocą polecenia
sudo reboot
.źródło
Jeśli aktualizacje zabezpieczeń są ustawione na automatyczne instalowanie, zdarza się to często. Dosłownie czekam 30 sekund i to rozwiązuje problem. Po prostu wyrzucam to na wypadek, gdyby ktoś napotkał ten problem.
źródło
W moim przypadku musiałem poczekać kilka minut, aż zamek zostanie zwolniony (wygląda jak
apt
przyzwyczajony do przytrzymania go). To wszystko wydarzyło się zaraz po uruchomieniu systemu.źródło
Po prostu
sudo rm -f /var/lib/apt/lists/lock
i spróbuj ponownie.apt-fast MOŻE być odpowiedzialny za nieprawidłowe odblokowanie; zdarza się to czasami, gdy przerywasz
apt-get
lubdpkg
też.źródło
Miałem ten problem wiele razy. Dla mnie prawie zawsze było to spowodowane przez apt-get lub jakiś GUI, który z jakiegoś powodu nazywał to zawieszaniem się. Musiałem go zabić, co pozostawiło różne zamki.
Inne odpowiedzi przynoszą bardzo dobre informacje na temat upewnienia się, że żadne aktualizacje nie są obecnie uruchomione przed podjęciem jakichkolwiek drastycznych działań, takich jak usunięcie plików blokady. Jednak, gdy masz pewność, że tak nie jest, poniższe zasady zwykle działają dla mnie. Mam to, czytając wiele odpowiedzi na pytania takie jak to.
Podczas gdy większość lub wszystkie z nich są przedstawione w innych odpowiedziach, rozkłada to na kilka poleceń.
Służy do odblokowywania systemu pakietów po pewnej aktualizacji, która uległa awarii lub została zakończona bez zakończenia w inny sposób. Te polecenia powinny być uruchamiane w podanej kolejności.
źródło
Nie widzę tej odpowiedzi nigdzie powyżej, ale na Ubuntu 16.04 również napotkałem ten problem. Przyczyną było to, że czas na moim komputerze był ustawiony na przyszłość . (Jest tak, ponieważ korzystam z systemu podwójnego rozruchu systemu Windows + Ubuntu i chyba pomieszałem czas lokalny z czasem UTC).
Dziwną rzeczą było to, że data i godzina zablokowanego pliku była dokładną datą i godziną uruchomienia programu.
Następnie użyłem „utrwalacza” jak opisano we wcześniejszych postach i apt działał, ale dostawałem skargi na konieczność uruchomienia
dpkg -a -reconfigure
. Gdy to zrobiłem, dostałem błędy takie jak:w plikach takich jak „/ var / lib / dpkg / updates / 0003”.
Wszystko to było bardzo dziwne, ponieważ nigdy wcześniej tego nie widziałem. Więc pomyślałem, że to były objawy i ręcznie zmieniłem swoje dane i czas. Wiedziałem, że wystąpił problem z datą / godziną, kiedy się logowałem, ale ignorowałem to. (Wcześniej ustawiał to automatycznie przez Internet i NTP).
Następnie wszystkie powyższe problemy zostały naprawione ... Mam nadzieję, że to pomaga komuś innemu! Najbardziej zauważalnym symptomem jest być może data / czas pliku blokady, czyli dokładna data / czas, kiedy próbujesz uruchomić polecenie.
źródło
W moim przypadku X zawiesił się, gdy
apt-get
wciąż usuwał stare jądra. Użyłem Monitora systemu, aby potwierdzić, że nadal działa i nie utknął. Po zakończeniu procesu wszystko było w porządku.źródło
Sprawdź program uruchamiający, aby zobaczyć, czy
Software Updater
działa. Jeśli tak, zmaksymalizuj to i zobacz, co robi. Jeśli nadal sprawdza, poczekaj na zakończenie. Po zakończeniu może to oznaczać, że oprogramowanie jest aktualne, więc zamknij aplikację. Jeśli wyświetli się informacja, że są dostępne aktualizacje, wykonaj aktualizację lub kliknij „przypomnij mi później”. Po zamknięciu tej aplikacji możesz wrócić do korzystania zapt-get
lubapt
.Jeśli
Software Updater
nie jest uruchomiony, po prostu użyj Dash, aby go wywołać i czekać na zakończenie, a następnie zdecyduj, czy chcesz zaktualizować, lub kliknij „przypomnij mi później”. Po zamknięciu tej aplikacji możesz wrócić do korzystania zapt-get
lubapt
.źródło
W moim przypadku otrzymywałem ten sam komunikat, nie zdając sobie sprawy, że przełączyłem się na użytkownika root i próbowałem sudo apt-get. Kiedy zdałem sobie z tego sprawę, po prostu uruchomiłem apt-get i zadziałało. Głupie, ale dla niektórych może to wyjaśniać błąd.
źródło
sudo
jako root (a nawet jeśli nie może, to nie produkują ten komunikat o błędzie). Bardziej prawdopodobne jest to, że drugi proces zakończył się podczas pisania następnego polecenia.Używaj na własne ryzyko
źródło
w moim przypadku po:
Wpisałem
wtedy mam problemy Naprawiłem to, uruchamiając polecenie pokazane mi po uruchomieniusudo apt update
To polecenie wyświetli listę programów w moim przypadku tylko Firefox, zamknąłem Firefox, a następnie mogłem ponownie uruchomić polecenie bez problemów.
źródło
Dla osób, które są zainteresowane proaktywnym zapobieganiem temu błędowi w swoich skryptach, zauważyłem, że flaga -q na
apt upgrade -yq
mnie spowodowała ten problem. Wydaje mi się, że podczas procesu aktualizacji czasami wyświetlał mi się ostrzeżenie (coś w stylu aktualizacji pulpitu, chciałbym kontynuować), a jeśli te ostrzeżenia zostały pominięte, to chyba powoduje, że nie odblokowuje chronionych plików i utknął.Wprawdzie miałem problem z odtworzeniem tego błędu przez 100% czasu, ale wyeliminowanie tej opcji -q całkowicie rozwiązało problem .
źródło
Jak większość innych czekałem na usunięcie blokady. Po 30 minutach poddałem się i uruchomiłem mocno do innej dystrybucji. Stamtąd wykorzystałem internet do badań, które mnie tu wylądowały.
Okazuje się, że
unattended-upgrades.service
działa. Znalazłem, że restartuję się do uszkodzonego systemu i działam:pozwolił mi przywrócić działanie uszkodzonego systemu dla:
Nie naprawiło to jednak zatrzymanych pakietów i niemożliwej sytuacji zgłoszonej przez
apt
. Wygląda na to, że spowodowałoapt
to zablokowanie się podczas uruchamiania.źródło