Startseite
» Gewusst wie
»
Die APT-Sperre von Ubuntu sicher aufheben und das Update abschließen
Die APT-Sperre von Ubuntu sicher aufheben und das Update abschließen
Die Fehlermeldung „Sperre /var/lib/dpkg/lock-frontend konnte nicht erlangt werden“ bedeutet in der Regel, dass bereits ein anderer Paketverwaltungsprozess aktiv ist. Warten Sie, bis dieser Prozess abgeschlossen ist, identifizieren Sie ihn gegebenenfalls und reparieren Sie erst dann die unterbrochene Paketkonfiguration. Das Löschen der Sperrdatei ist keine sichere Lösung.
APT ist das Paketverwaltungstool von Ubuntu, während dpkgdie Paketinstallation und -konfiguration auf niedrigerer Ebene erfolgt. Beide verwenden Sperren, um zu verhindern, dass zwei Operationen gleichzeitig den Paketstatus ändern. Eine Sperrdatei kann während des normalen Betriebs auf der Festplatte verbleiben; ihre bloße Anwesenheit bedeutet also nicht, dass das Paket veraltet ist.
1. Geben Sie dem Ubuntu-Updater die Möglichkeit, den Vorgang abzuschließen.
Schließen Sie zunächst alle anderen gestarteten Paketprozesse, wie z. B. andere Terminalbefehle, die Softwareaktualisierung oder die Installation einer App aus einem App-Store. Falls ein Aktualisierungsdialog geöffnet ist, lassen Sie ihn abschließen, anstatt einen zweiten aptBefehl zu starten. Unter Ubuntu Desktop können auch Hintergrundaktualisierungsdienste aktiv sein.
Prüfen Sie die relevanten systemd-Dienste und warten Sie, ob einer aktiv ist:
systemctl status apt-daily.service apt-daily-upgrade.service
Diese Einheiten können inaktiv sein, selbst wenn ein anderes Paket-Frontend die Sperre besitzt. Überprüfen Sie daher auch den Prozess, der die exakte Sperre verwendet. Führen Sie keine weiteren Installations- oder Aktualisierungsbefehle aus, solange der aktuelle Vorgang aktiv ist.
Die Sperrmeldung nennt die verwendete Ressource und kann eine Prozess-ID zur Untersuchung enthalten.
2. Ermitteln Sie, wer die Frontend-Sperre innehat.
Verwenden Sie diese Funktion fuser, um die Prozesse anzuzeigen, die auf die Sperre zugreifen, und überprüfen Sie anschließend die von ihnen gemeldeten Prozess-IDs (PIDs):
Ersetzen Sie <PID> 2468durch die tatsächliche PID aus Ihrer Ausgabe. Ein Prozessname wie <Prozessname> apt, apt-get<Prozessname>, dpkg<Update-Dienstname> oder ein Update-Dienst deutet darauf hin, dass die Paketverarbeitung möglicherweise noch läuft. Um eine umfassendere Prozessliste anzuzeigen, führen Sie folgenden Befehl aus:
ps -eo pid,etime,cmd | grep -E '[a]pt|[d]pkg'
Gehen Sie nicht davon aus, dass ein Prozess eingefroren ist, nur weil kein Fortschritt sichtbar ist. Paket-Downloads, Wartungsskripte und Neustarts von Diensten können Zeit in Anspruch nehmen. Wenn Sie ein Update in einem anderen Terminal gestartet haben, kehren Sie zu diesem Terminal zurück und lassen Sie es abschließen. Falls ein grafisches Update-Programm den Vorgang verwaltet, verwenden Sie dieses, um ihn abzubrechen oder wie gewohnt zu beenden.
Verwenden Sie die gemeldete Prozess-ID (PID) und den Befehlsnamen, um einen aktiven Updater von dem Befehl zu unterscheiden, den Sie ausführen möchten.
3. Gehen Sie bei einem tatsächlich festsitzenden Bauteil vorsichtig vor.
Handelt es sich um einen automatischen Aktualisierungsprozess, überprüfen Sie dessen Status und Protokolle, bevor Sie eingreifen:
systemctl status apt-daily-upgrade.service
sudo journalctl -u apt-daily-upgrade.service -b --no-pager
Solange der Dienst noch läuft, lassen Sie ihn in Ruhe. Falls Sie einen von Ihnen selbst gestarteten Paketbefehl erkennen, der offensichtlich hängt, unterbrechen Sie ihn einmalig in seinem Terminal Ctrl+Cund warten Sie, bis er zur Shell zurückkehrt. Verwenden Sie nicht `package.json` kill -9, `package.json` killall dpkgoder entfernen Sie keine Dateien im Verzeichnis `/etc/ /var/lib/dpkgpackage.json`; ein abruptes Beenden von Paketskripten kann dazu führen, dass Pakete zwar entpackt, aber nicht konfiguriert werden.
Wenn der Prozess beendet wurde, die Paketverarbeitung aber unterbrochen wurde, ist ein Neustart eine sinnvolle Methode, um verwaiste Benutzerspeicherprozesse zu entfernen. Stellen Sie nach dem Neustart sicher, dass keine Softwareaktualisierung oder Installationsaufgabe ausgeführt wird, bevor Sie fortfahren. Falls ein Dienst wiederholt hängen bleibt, verwenden Sie die Journalausgabe zur Diagnose des Dienstes, anstatt wiederholt Sperrdateien zu löschen.
Ein aktiver apt-daily-upgrade-Dienst ist ein Grund, abzuwarten und den Fortschritt zu überprüfen, nicht aber, die Sperre zu entfernen.
4. Zustand des Reparaturpakets nach Entsperrung
Sobald kein Paketmanager die Sperre mehr verwendet, schließen Sie alle ausstehenden Paketkonfigurationen ab:
sudo dpkg --configure -a
Dadurch werden Pakete konfiguriert, die zwar entpackt, aber noch nicht vollständig eingerichtet wurden. Falls Abhängigkeitsprobleme gemeldet werden, bitten Sie APT, diese zu beheben.
sudo apt-get -f install
Lesen Sie die vorgeschlagenen Änderungen, bevor Sie sie bestätigen. Fügen Sie -ywährend der Fehlersuche keine Pakete hinzu: Die Eingabeaufforderung ermöglicht es Ihnen zu überprüfen, ob APT eine unerwartete Entfernung oder Änderung plant. Aktualisieren Sie nach Abschluss der Reparatur die Paketlisten und versuchen Sie die ursprüngliche Aufgabe erneut.
Ersetzen Sie dies PACKAGE_NAMEdurch das Paket, das Sie installieren wollten. Die APT-get-Anleitung von Ubuntu -fbeschreibt den Versuch, fehlerhafte Abhängigkeiten zu beheben, und die dpkg-Anleitung erklärt die Paketkonfiguration. Falls APT weiterhin eine Sperre meldet, wiederholen Sie die Überprüfung des Prozesses; möglicherweise wurde zwischenzeitlich ein weiterer Paketinstallationsvorgang gestartet.
Nachdem die Sperre aufgehoben wurde, konfigurieren Sie die ausstehenden Pakete und überprüfen Sie, ob APT einen konsistenten Paketstatus lesen kann.
Bestätigen Sie, dass die Reparatur funktioniert hat.
Die Behebung des Problems ist abgeschlossen, wenn der ursprüngliche Installations- oder Aktualisierungsbefehl ohne Sperrfehler ausgeführt wird, sudo dpkg --configure -aohne Konfigurationsfehler beendet wird und sudo apt-get checkkeine beschädigten Abhängigkeiten meldet. Falls die Sperre erneut auftritt, wird sie noch von einem anderen Prozess beansprucht; identifizieren Sie diesen Prozess, bevor Sie weitere Maßnahmen ergreifen.
Die aktuellen Noble-Handbücher von Ubuntu beschreiben die oben genannten Paketbefehle. Die genauen Ausführungszeiten und Prozessnamen variieren je nach Ubuntu-Version und den installierten Desktop-Paketverwaltungstools, aber die Grundregel bleibt dieselbe: Warten Sie auf den Sperrinhaber und reparieren Sie dann dpkg, falls der vorherige Vorgang unterbrochen wurde.