ARGH!! Ein Zeichen vergessen, schon ist der Datenbankzugriff gebrickt. Besser gesagt, es war nicht mehr möglich ein Update auszuführen, oder ein Programm zu (de-)installieren.
Was ist geschehen?
Ich wollte nach dem Systemupdate den Rechner automatisch neu starten lassen. Daher habe ich folgendes Konstrukt in der CLI abgesetzt:
root@Rechnername # pacman -Syu && sleep 5 && sync && sleep 5 & reboot
Man beachte das fehlende & vor dem reboot-Befehl. Zu meiner Verwunderung hat der Rechner das Updaten übersprungen und hat sofort einen reboot durchgeführt. Nach dem das System gebootet war, habe ich mir das 'Konstrukt' genauer angesehen und das fehlende '&' ergänzt und abgesetzt. Pacman gab mir nur folgende Meldungen:
:: Synchronisiere Paketdatenbanken...
Fehler: Konnte core nicht aktualisieren (Kann Datenbank nicht sperren)
Fehler: Konnte extra nicht aktualisieren (Kann Datenbank nicht sperren)
Fehler: Konnte community nicht aktualisieren (Kann Datenbank nicht sperren)
Fehler: Konnte multilib nicht aktualisieren (Kann Datenbank nicht sperren)
Fehler: Fehler beim synchronisieren aller Datenbanken
Wie habe ich das Problem gelöst?
Ich habe im Internet nach
Fehler: Konnte core nicht aktualisieren (Kann Datenbank nicht sperren) gesucht, und in einem Forenbeitrag von Manjaro bin ich auf einen Hinweis gestoßen¹, dass man mit einem
rm /var/lib/pacman/db.lck
die Datenbank entsperren könnte. Mit
ls habe ich überprüft, ob diese Datei existiert, eine .bak-Kopie besagter Datei angelegt und das Orginal gelöscht
root@Rechnername # ls /var/liv/pacman
. .. db.lck local sync
root@Rechnername # cp /var/lib/pacman/db.lck /var/lib/pacman/db.lck.bak
root@Rechnername # rm /var/lib/pacman/db.lck
Danach habe ich
pacman -Syu aufgerufen, und siehe da, die Fehlermeldungen sind weg und Packman führt die Updates einwandfrei durch. Nach dem Pacman durchgelaufen ist, habe ich abschließend die db.lck.bak gelöscht.
Was habe ich daraus gelernt?
→ Vor dem absetzen eine Befehls nochmals genau überprüfen ob alles seine richtigkeit hat
→ Dass Pacman bei Updates beziehungsweise (De-) Installationen die Datenbank mit einer db.lck-Datei sperrt
→ Dass man (Systemrelevante) Wartungsarbeiten nicht abgelenkterweise/übermüdet/betrunken durchführen sollte
→ Dass ich beim nächsten mal nicht so viel Glück haben werde
——————————
¹ Über Fünf Ecken kombiniert, dass eine *.lck-Datei eigentlich benutzt wird, um anzuzeigen dass ein aktiver Zugriff auf eine bestimmte Datei stattfindet…