GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So beheben Sie den Fehler „E:Sperre /var/lib/dpkg/lock konnte nicht abgerufen werden“ in Ubuntu Linux

Kürzlich habe ich versucht, eine Anwendung mit dem apt-Befehl unter Ubuntu zu installieren, als ich auf den folgenden Fehler gestoßen bin:

E:Sperre /var/lib/dpkg/lock konnte nicht abgerufen werden – offen (11:Ressource vorübergehend nicht verfügbar)
E:Das Verwaltungsverzeichnis (/var/lib/dpkg/) kann nicht gesperrt werden, wird es von einem anderen Prozess verwendet?

Tatsächlich gibt es einen ähnlichen Fehler, den Sie möglicherweise sehen:

E:Sperre /var/lib/apt/lists/lock konnte nicht abgerufen werden – offen (11:Ressource vorübergehend nicht verfügbar)
E:Verzeichnis /var/lib/apt/lists/ konnte nicht gesperrt werden
E:Sperre /var/lib/dpkg/lock konnte nicht abgerufen werden – offen (11:Ressource vorübergehend nicht verfügbar)
E:Das Verwaltungsverzeichnis (/var/lib/dpkg/) kann nicht gesperrt werden, wird es von einem anderen Prozess verwendet?

In einigen Fällen wird es möglicherweise angezeigt, wenn Sie das Software-Center verwenden:

Diese Fehler sind einem anderen häufigen Ubuntu-Fehler sehr ähnlich, Unable to lock directory /var/cache/apt/archives/, und das Interessante ist, dass die Korrekturen ebenfalls ähnlich sind.

Behebung des Fehlers „Verwaltungsverzeichnis (/var/lib/dpkg/) kann nicht gesperrt werden“

Sie sehen diesen Fehler, weil ein anderes Programm versucht, Ubuntu zu aktualisieren. Wenn ein Befehl oder eine Anwendung das System aktualisiert oder eine neue Software installiert, wird die dpkg-Datei (Debian-Paketmanager) gesperrt.

Diese Sperrung erfolgt, damit nicht zwei Prozesse gleichzeitig den Inhalt ändern, da dies zu einer ungerechtfertigten Situation und einem möglichen Systemausfall führen kann.

Sehen wir uns an, welche Schritte Sie unternehmen können, um dieses Problem „Verwaltungsverzeichnis kann nicht gesperrt werden“ zu beheben.

Methode 0:

Als Erstes sollten Sie überprüfen, ob ein anderes Programm möglicherweise ein Systemupdate ausführt oder ein Programm installiert.

Wenn Sie die Befehlszeile verwenden, überprüfen Sie, ob eine Anwendung wie Software Center, Software Updater, Synaptic Package Manager, Gdebi ein Update/eine Installation ausführt. Warten Sie in diesem Fall bitte, bis das Programm den laufenden Prozess beendet hat.

Wenn keine solche Anwendung ausgeführt wird, überprüfen Sie bitte alle geöffneten Terminalfenster und prüfen Sie, ob Sie ein Update ausführen oder ein Programm installieren. Wenn ja, warten Sie, bis es fertig ist.

Wenn keiner der oben genannten Fälle auftritt, überprüfen Sie, welcher andere Prozess den apt-Befehl ausführt (Paketmanager für die Handhabung von Software). Verwenden Sie diesen Befehl:

ps aux | grep -i apt

Für mich zeigte es diese Ausgabe:

[email protected]:~$ ps aux | grep -i apt
root      1464  0.0  0.0   4624   772 ?        Ss   19:08   0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update
root      1484  0.0  0.0   4624  1676 ?        S    19:08   0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update
_apt      2836  0.8  0.1  96912  9432 ?        S    19:09   0:03 /usr/lib/apt/methods/http
abhishek  6172  0.0  0.0  21532  1152 pts/1    S+   19:16   0:00 grep --color=auto -i apt

Wenn Sie sehen, dass apt von einem Programm wie apt.systemd.daily update verwendet wird , Sie haben Glück, mein lieber Leser.

Dies ist ein Daemon, der im Hintergrund läuft und automatisch nach Systemaktualisierungen sucht, wenn Sie Ihr System starten.

In Ubuntu 18.04 und höheren Versionen versucht es sogar, die wichtigen Sicherheitsupdates selbst herunterzuladen und zu installieren. Zumindest sehe ich das in den Standardeinstellungen im Tool Software &Updates auf dem Ubuntu-Desktop.

Wenn Sie sich auf einem Ubuntu-Server befinden, können Sie überprüfen, ob unbeaufsichtigte Upgrades aktiviert sind, indem Sie den Inhalt der Datei /etc/apt/apt.conf.d/20auto-upgrades überprüfen .

Wenn Sie also sehen, dass apt.systemd.daily den apt-Prozess verwendet, brauchen Sie nur ein paar Minuten zu warten. Wenn das automatische Update abgeschlossen ist, sollten Sie Ihre Software wie gewohnt installieren können.

Als dauerhafte Lösung können Sie die Überprüfung auf automatische Updates und unbeaufsichtigte Upgrades ganz deaktivieren, aber ich werde dies aus Sicherheitsgründen nicht empfehlen.

Nun, das war das einfache Szenario und es konnte leicht gehandhabt werden. Aber das ist vielleicht nicht immer der Fall. Wenn ein anderes Programm apt verwendet, müssen Sie es anders handhaben.

Methode 1:

Verwenden Sie die Linux-Befehlszeile, um den laufenden Prozess zu finden und zu beenden. Verwenden Sie dazu den folgenden Befehl:

ps aux | grep -i apt

Dies zeigt Ihnen die ID des Prozesses, der apt oder apt-get ausführt. Im Beispiel unten lautet die Prozess-ID 7343. Sie können die letzte Zeile mit „grep –color=auto“ ignorieren.

Sie können die Prozess-ID verwenden, um sie zu beenden, indem Sie das SIGTERM-Signal senden. Ersetzen Sie die durch die Nummer, die Sie in der Ausgabe des vorherigen Befehls erhalten haben.

sudo kill <process_id>

Überprüfen Sie, ob der Prozess beendet wurde, indem Sie den Befehl „ps aux | grep -i apt’-Befehl. Wenn es noch läuft, erzwingen Sie das Beenden mit dem SIGKILL-Signal:

sudo kill -9 <process_id>

Eine andere, einfachere Möglichkeit wäre die Verwendung des Befehls killall. Dies wird alle Instanzen eines laufenden Programms beenden:

sudo killall apt apt-get

Methode 2

Die obige Methode würde das Problem in den meisten Fällen für Sie beheben. Aber mein Fall war etwas anders. Ich habe mein System aktualisiert und versehentlich das Terminal geschlossen. Aus diesem Grund liefen keine Prozesse apt, aber es zeigte mir trotzdem den Fehler.

Ich würde empfehlen, die beiden oben genannten Methoden auszuprobieren oder einfach zuerst Ihr System neu zu starten. Wenn nichts davon funktioniert, entscheiden Sie sich nur für diese Option zum Entfernen der Sperrdateien.

In diesem Fall ist die Hauptursache die Sperrdatei. Wie bereits erwähnt, werden die Sperrdateien verwendet, um zu verhindern, dass zwei oder mehr Prozesse dieselben Daten verwenden. Wenn apt- oder apt-get-Befehle ausgeführt werden, erstellen sie an einigen Stellen Sperrdateien. Wenn der vorherige apt-Befehl nicht ordnungsgemäß beendet wurde, werden die Sperrdateien nicht gelöscht und verhindern daher neue Instanzen von apt-get- oder apt-Befehlen.

Um das Problem zu beheben, müssen Sie lediglich die Sperrdateien entfernen. Aber bevor Sie das tun, wäre es eine gute Idee, jeden Prozess zu stoppen, der die Sperrdateien verwendet.

Verwenden Sie den Befehl lsof, um die Prozess-ID des Prozesses abzurufen, der die Sperrdateien enthält. Überprüfen Sie den Fehler und sehen Sie, über welche Sperrdateien er sich beschwert, und erhalten Sie die ID der Prozesse, die diese Sperrdateien enthalten.

Führen Sie diese Befehle nacheinander aus.

sudo lsof /var/lib/dpkg/lock
sudo lsof /var/lib/apt/lists/lock
sudo lsof /var/cache/apt/archives/lock

Es ist möglich, dass die Befehle nichts oder nur eine Zahl zurückgeben. Wenn sie mindestens eine Zahl zurückgeben, verwenden Sie die Zahl(en) und beenden Sie die Prozesse wie folgt (ersetzen Sie die durch die Zahlen, die Sie von den obigen Befehlen erhalten haben):

sudo kill -9 <process_id>

Sie können die Sperrdateien jetzt mit den folgenden Befehlen sicher entfernen:

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

Konfigurieren Sie danach die Pakete neu:

sudo dpkg --configure -a

Wenn Sie jetzt den Befehl sudo apt update ausführen, sollte alles in Ordnung sein.

Fehlerbehebung 1:„Die dpkg-Frontend-Sperre kann nicht erworben werden“

Wenn Sie einen Fehler wie diesen sehen:

[email protected]:~$ sudo apt install grub-customizer 
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

Sie sollten herausfinden, welcher Prozess das Lock-Frontend hält, indem Sie den Befehl lsof verwenden, wie in den vorherigen Abschnitten besprochen:

sudo lsof /var/lib/dpkg/lock-frontend

Folgendes wurde mir angezeigt:

[email protected]:~$ sudo lsof /var/lib/dpkg/lock-frontend
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
unattende 2823 root    5uW  REG    8,2        0 145221 /var/lib/dpkg/lock-frontend

Wenn Sie „unattende“ sehen ‘ COMMAND-Spalte bedeutet dies, dass unbeaufsichtigte Sicherheitsupgrades ausgeführt werden. Sie sollten warten, bis der Vorgang abgeschlossen ist . Im Grunde habe ich das in Methode 0 besprochen, aber das haben Sie wahrscheinlich übersprungen.

Wenn der BEFEHL etwas anderes ist, können Sie den Prozess beenden und dann die Sperrdatei entfernen. Sie können die Prozess-ID unter der PID-Spalte sehen. Verwenden Sie diese PID, um den Prozess zu beenden. Entfernen Sie danach die Sperrdatei und führen Sie den Update-Befehl aus, um zu sehen, ob sie behoben wurde.

sudo kill -9 PID
sudo rm /var/lib/dpkg/lock-frontend
sudo apt update

Was ist das für lsof:warning can't stat() fuse.gvfsd-fuse file system?

Hinweis:Wenn „lsof:warning can’t stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Ausgabeinformationen können unvollständig sein“ Zeilen nach dem Ausführen des zuvor erwähnten lsof-Befehls, keine Panik.

Das ist kein Fehler. Es ist nur so, dass lsof versucht, auch in gemountete Dateisysteme zu schauen, und die Warnung bezieht sich auf diese gemounteten Systeme.

Die Dateien werden von den Prozessen auf Ihrem Hauptdateisystem gesperrt. Wenn also eine Warnung und keine Ausgabe angezeigt wird, bedeutet dies nur, dass es keinen Prozess gibt, der diese Sperrdateien verwendet.

Fehlerbehebung 2:„dpkg:Fehler:Dpkg-Frontend wird von einem anderen Prozess gesperrt“

Wenn Sie beim Ausführen der Schritte in Methode 2 den Fehler „dpkg frontend is locked by another process“ sehen, müssen Sie einen zusätzlichen Schritt ausführen.

Finden Sie zuerst die ID des Prozesses heraus, der die Sperrdatei enthält.

sudo lsof /var/lib/dpkg/lock-frontend

Der obige Befehl gibt Ihnen die Details der Prozesse, die die Sperrdateien verwenden. Verwenden Sie die Prozess-ID, um dieses Programm zu beenden:

sudo kill -9 PID

Jetzt können Sie die Sperre entfernen und dpkg neu konfigurieren:

sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a

Hat es bei Ihnen funktioniert? Welche Methode hat es für Sie behoben?

Ich hoffe, dieser kleine Tipp hat Ihnen geholfen, den Fehler „Could not get lock /var/lib/dpkg/lock“ zu beheben. Wenn ja, teilen Sie mir bitte in den Kommentaren mit, welche Methode für Sie funktioniert hat.

Wenn Sie immer noch mit dem Problem konfrontiert sind, lassen Sie es mich wissen. Ich werde versuchen, dir zu helfen.

Alle anderen Vorschläge sind auch in den Kommentaren willkommen.



Ubuntu
  1. Behebung des Fehlers „dpkg:error:parsing file ‚/var/lib/dpkg/updates/0014′“ in Ubuntu

  2. Ubuntu E:Lock /var/lib/dpkg/lock Fehler konnte nicht abgerufen werden – Jetzt beheben?

  3. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  4. Wie beendet man den Prozess, der die Apt-Sperre hält?

  5. So beheben Sie den Fehler „Lock / var / lib / dpkg / lock – open (11 Ressource vorübergehend nicht verfügbar) konnte nicht abgerufen werden

5 Lösungen – So beheben Sie den Fehler „Zsh-Befehl nicht gefunden“ in Linux oder macOS

So lösen Sie den Fehler „E:Sperre /var/lib/dpkg/lock konnte nicht abgerufen werden“ in Ubuntu

Behebung des Fehlers „Sperre /var/lib/dpkg/lock konnte nicht abgerufen werden“ ein für alle Mal (Ubuntu)

So beheben Sie „Die Update-Informationen sind veraltet“ in Ubuntu Linux

Behebung des Fehlers „Paketdatei /var/lib/apt/lists kann nicht analysiert werden“ in Ubuntu und anderen Linux-Distributionen

So beheben Sie den Fehler „Repository ist noch nicht gültig“ in Ubuntu Linux