Ein paar Mal, während der Installation / Aktualisierung eines Pakets von der Kommandozeile (mit apt-get oder apt ) in Ubuntu, erhalten wir diesen Fehler: E: Das Verwaltungsverzeichnis (/ var / lib / dpkg /) kann nicht gesperrt werden . Aus der Sicht eines Anfängers ist dies ein komplexer Fehler, da neue Benutzer das Verzeichnis "/ var / lib / dpkg /" meist nicht kennen und wissen, was es mit der aktuellen Operation zu tun hat.

Technisch wird der Fehler vom System in mehreren Szenarien ausgelöst, und man sollte wirklich darauf achten, wie er / sie das Problem löst. In diesem Artikel werden wir alle diese Aspekte im Zusammenhang mit diesem Fehler diskutieren und wie Sie es sicher loswerden können.

Sperren nicht möglich (/ var / lib / dpkg /) - Diagnose des Problems

Wann immer Sie auf diesen Fehler stoßen, sollte der erste Schritt sein, die Fehlerbeschreibung sorgfältig zu lesen. Es enthält normalerweise einige wichtige und zeitsparende Hinweise. Als Beispiel zeigen die folgenden Screenshots den Befehl "apt-get install", der ähnliche Fehler verursacht.

Wenn Sie jedoch genauer hinschauen, werden Sie feststellen, dass der Text in Klammern in der ersten Zeile und der Text hinter dem Komma in der zweiten Zeile in beiden Szenarien unterschiedlich sind. Dadurch wird deutlich, dass der Fehler im ersten Szenario etwas mit sich bringt mit Benutzerberechtigungen tun, während es im zweiten Szenario damit zu tun hat, dass die Sperrdatei vorübergehend nicht verfügbar ist.

Wenn ein berechtigungsbezogener Fehler auftritt (wie im ersten Bild oben gezeigt), liegt dies höchstwahrscheinlich daran, dass der Benutzer, der den Befehl "apt-get" oder "apt" ausführt, nicht über ausreichende Berechtigungen verfügt und der Befehl ohne ausgeführt wurde sudo . Sobald der Befehl mit Root-Rechten ausgeführt wird, verschwindet der Fehler.

Wenn es sich jedoch um einen Lock-bezogenen Fehler handelt, sind weitere Untersuchungen erforderlich.

Was ist / var / lib / dpkg /?

"/ Var / lib / dpkg /" kann als Arbeitsverzeichnis für den Paketmanager "dpkg" betrachtet werden, der wiederum die Engine hinter "apt-get" (sowie den Tools "apt" und "aptitude") ist. . Wenn Sie diese Tools zum Installieren oder Entfernen von Software verwenden, sperren sie die Paketdatenbank (indem Sie eine "Sperrdatei" erstellen), bevor Sie die eigentliche Operation ausführen. Dies geschieht, indem Sie die Sperre für "/ var / lib / dpkg / " Verzeichnis. Dieser Schritt hilft, Datenverfälschung oder Unterbrechung eines laufenden Vorgangs zu vermeiden, der von einem anderen Prozess ausgeführt wird.

Vorausgesetzt, Sie haben das oben erläuterte Konzept verstanden, diskutieren wir nun die Untersuchungsschritte.

Schritt 1: Sehen Sie, ob es noch andere Prozesse gibt, die das Schloss halten

Das sollte jetzt ziemlich logisch erscheinen, oder? Dazu können Sie die Hilfe des guten alten Befehls ps und die Ausgabe an den Befehl grep so dass Sie weniger Zeit darauf verwenden, nach dem zu suchen, was Sie möchten. Im Folgenden finden Sie beispielsweise einen Befehl, mit dem Sie feststellen können, ob bereits ein Prozess "apt", "apt-get" oder "aptitude" ausgeführt wird:

 ps aux | Grep apt 

Schritt 2: Warten Sie eine Weile und ergreifen Sie dann Maßnahmen

Wenn es tatsächlich einen Befehl gibt, der die Sperre bereits erhalten hat, sollten Sie idealerweise warten, bis die Sperre abgeschlossen ist. Wenn der Befehl jedoch mehr als die erwartete Zeit benötigt und Sie sicher sind, dass er irgendwo hängen bleibt, können Sie ihn mit den verfügbaren Befehlen kill oder killall beenden (weitere Informationen finden Sie hier). Dies sollte das Problem lösen, vor dem Sie stehen.

Eine Sache, die hier erwähnt werden sollte, ist, dass das direkte Beenden eines "dpkg" -Prozesses niemals empfohlen wird - es könnte die Paketdatenbank beschädigen. Ich betone diesen Punkt, weil Sie jetzt wissen, dass Werkzeuge wie "apt" und "apt-get" intern "dpkg" aufrufen, so dass es durchaus möglich ist, dass Sie den "dpkg" -Prozess beenden, wenn Sie ihn in "ps "Befehlsausgabe.

Killing-Prozesse, die durch das Ausführen von apt-, apt-get- oder aptitude-Befehlen ausgelöst werden, sind im Allgemeinen viel sicherer.

Schritt 3: Wenn die "ps" -Befehlsausgabe nicht hilft

Beachten Sie, dass neben den Befehlszeilentools apt und apt-get auch einige GUI-basierte Anwendungen wie das Software Center oder der Update Manager diese Sperre erhalten.

Hinweis : Wenn Sie kurz nach dem Hochfahren von Ubuntu den Sperrfehler erhalten, ist es durchaus möglich, dass sich Ihr Vorgang mit dem vom Update-Manager initiierten automatischen Polling überschneidet. Ein bisschen Warten sollte in diesem Fall das Problem lösen.

Zurück zu den GUI-basierten Anwendungen, über die wir gesprochen haben, ist eine weitere nützliche und zeitsparende Option, den fuser Befehl zu verwenden.

Mit "fuser" müssen Sie nur die Datei kennen, auf die zugegriffen wird ("/ var / lib / dpkg / lock" in unserem Fall), und Sie können den Prozess beenden, der auf diese Datei zugreift, selbst wenn Sie nicht wissen, um welchen Prozess es sich handelt. Beispielsweise:

 sudo fuser -cuk / var / lib / dpkg / lock 

fuser Sie, dass der Befehl fuser das vom gerade ausgeführten Prozess erlangte Schloss nicht fuser Sie müssen dies also manuell tun:

 sudo rm -f / var / lib / dpkg / sperren 

Hinweis : Wenn Sie die Sperre aufheben, bedeutet dies einfach, dass Sie die Datei "Sperren" löschen, damit andere Prozesse die Sperre durch erneutes Erstellen übernehmen können.

Sie müssen möglicherweise auch die folgenden zwei Befehle ausführen:

 sudo fuser -cuk / var / cache / apt / archiven / sperren; sudo rm -f / var / cache / apt / archiven / sperren 

Wichtiger Tipp : Löschen Sie Sperrdateien niemals als ersten Schritt - dies sollte nur Ihr letzter Ausweg sein.

Fazit

Im Allgemeinen ist es immer gut, den Grund für das Problem zu verstehen, bevor Sie fortfahren und es lösen. Blind zu versuchen, Lösungen zu finden, um ein Problem zu lösen, wird dir nie helfen - du wirst in einigen Fällen erfolgreich sein, aber meistens wirst du dich in einem noch größeren Durcheinander befinden, besonders wenn das Betriebssystem Linux ist.

Haben Sie jemals den Fehler gesehen, den wir hier besprochen haben? Wie hast du es geregelt? Hinterlasse deine Antwort in den Kommentaren.