Ich habe einige Dateien gelöscht /var/lib/dpkg/
, nämlich:
/var/lib/dpkg/status
/var/lib/dpkg/available
/var/lib/dpkg/info/*
Ich verstehe, dass Debian diese Dateien verwendet, um einige Informationen über installierte Pakete zu speichern. Wenn ich das tue apt-get update
, erhalte ich folgenden Fehler:
Reading package lists... Error!
E: Could not open file /var/lib/dpkg/status - open
(2: No such file or directory)
E: The package lists or status file could not be parsed or opened.
Nach meinem Verständnis der FHS sollten Dateien in /var
nicht systemkritisch sein. Bewerter sollten dies temporäre Dateien, Protokolle, Caches und ähnliches sein.
Gibt es daher eine Möglichkeit, die gelöschten Dateien neu zu erstellen?
apt
package-management
directory-structure
dpkg
Martin Vegter
quelle
quelle
/var/lib/dpkg/info
ist auch ziemlich wichtig. Sie haben die FHS falsch verstanden, und AFAIK die einzigen Wiederherstellungspfade sind (a) Wiederherstellung aus dem Backup oder (b) Neuinstallation.Antworten:
Wenn Sie sich den Zweck von / var ansehen, wie er im Dateisystem-Hierarchiestandard angegeben ist , heißt es:
Beachten Sie, dass "vorübergehende und temporäre" Dateien nur eines der darin enthaltenen Elemente sind. Es enthält auch "Spool-Verzeichnisse und -Dateien" und "Verwaltungs- und Protokolldaten". Sie haben wichtige "Verwaltungsdaten" gelöscht.
Es wird weiter erklärt, warum es
/var
existiert:Das ist das Wichtigste
/var
: Die darin enthaltenen Daten ändern sich im Gegensatz zu/usr
(was sich nur ändert, wenn Sie Software hinzufügen / entfernen / aktualisieren).Weitere Abschnitte erläutern die verschiedenen Unterverzeichnisse von
/var
; Beispiel/var/lib
(wo die von Ihnen gelöschten Dateien zum Leben erweckt wurden) enthält "Statusinformationen zu einer Anwendung oder zum System", definiert als "Daten, die Programme während der Ausführung ändern und die sich auf einen bestimmten Host beziehen".Sie sollten Dateien wirklich nicht löschen, ohne zu wissen, wofür die jeweilige Datei bestimmt ist. Mit den Dateien , die Sie gelöscht, wenn Sie eine Sicherung dieser Dateien haben, ich glaube , das einzige , was ein Backup ist nimm mehr zu tun
/home
,/etc
usw. und wieder installieren. Bis Sie dies tun, können Siedpkg
(und APT usw.) nicht verwenden. Ansonsten sollte das System weiterhin funktionieren.quelle
apt-get update
wird wieder verfügbar bauen, glaube ich. Die Informationen / Inhalte stammen von jedem installierten Paket, spiegeln aber auch den Verlauf wider, zumindest für alte Conf-Dateien ... aber Sie könnten wahrscheinlich mit dem Kopieren von genau derselben/var/lib
Statusinformationen. Persistente Daten, die von Programmen während der Ausführung geändert wurden, z. B. Datenbanken, Metadaten des Verpackungssystems usw."Sie können nicht "neu erstellen",
/var/lib/dpkg/status
indem Sie nur einen Befehl ausführen, und die Datei wird auf magische Weise angezeigt. Nein. Sie müssen eine Sicherungskopie der Datei verwenden und lernen, niemals Dinge aus dem/var/lib
Verzeichnis zu löschen :Dies würde Ihnen den Paketstatus des Vortages geben. Fangen Sie an zu beten, es hat nichts anderes kaputt gemacht.
quelle
/var/backups
, es gibt dort mehrere Kopien./var/backups/dpkg.status.0
?Dateien in
/var
sind sehr systemkritisch. Zum Beispiel/var/mail
oder/var/spool/mail
enthält die E-Mail der Benutzer; Sie würden das nicht mehr löschen, als Sie ein Feuer in der Mailbox Ihres Nachbarn entzünden würden. Es sind nur Dateien in bestimmten Unterverzeichnissen/var
, die mehr oder weniger vergängliche Dateien enthalten: Anmeldedateien/var/log
, Caches, in denen normalerweise neu erstellt werden kann/var/cache
, temporäre Dateien (die Sie nicht löschen sollten, während sie verwendet werden!)/var/tmp
.Daten in
/var/lib
können sehr kritisch sein. Beispielsweise ist MySQL normalerweise so konfiguriert, dass seine Datenbanken/var/lib/mysql
standardmäßig gespeichert werden: Wenn Sie dies löschen, löschen Sie Ihre Datenbanken. Dpkg stellt auch seine eigenen Datenbanken unter/var/lib
;/var/lib/dpkg/status
ist ein./var/lib/dpkg/status
enthält Informationen zu installierten Paketen. Wenn Sie das gelöscht haben, sollten Sie es aus einer Sicherung wiederherstellen. Wenn Ihre Sicherung nicht vollständig auf dem neuesten Stand ist, überprüfen Sie die Protokolle der letzten Paketmanipulationen unter/var/log/apt
und in/var/log/dpkg.log
. Sie müssen diese Datei erstellen, bevordpkg
sie funktioniert./var/lib/dpkg/available
basiert auf Daten, die aus dem Internet heruntergeladen wurden.apt-get update
sollte es wieder aufbauen./var/lib/dpkg/info
enthält Dateien, die mit Debian-Paketen geliefert werden. Sie können diese Dateien einfach wiederherstellen, indem Sie die Pakete neu installieren. Dazu benötigen Sie natürlich eine Liste der installierten Pakete. Wenn Sie wiederhergestellt haben/var/lib/dpkg/status
, können Sie die Liste der Pakete von dort extrahieren.Wenn Sie verloren haben
/var/lib/dpkg/status
, können Sie es möglicherweise neu erstellen, indem Sie eine leere Datei erstellen und dannapt-get install --reinstall
die Liste der Pakete ausführen. Ein Ort, an dem auch die Liste der Pakete gespeichert wird/var/lib/apt/extended_states
, ist , zumindest wenn Sie APT nur zum Installieren von Paketen verwendet haben (im Gegensatz zudpkg
direkt) - verwenden Sie diese Datei anstelle des/var/lib/dpkg/status
obigen Befehls. Wenn Sie dies ebenfalls gelöscht haben, können Sie eine ungefähre Liste von Paketen mit neu$(cd /usr/share/doc && ls)
erstellen, da die meisten Pakete einen Eintrag in erstellen/usr/share/doc
. Es gibt wahrscheinlich einige Ausnahmen.Bitten Sie nicht um Unterstützung bei der Paketverwaltung auf diesem System. Die Wiederherstellung nach dem Löschen systemkritischer Dateien ist keine exakte Wissenschaft. Wenn Sie aus Backups keine Wiederherstellung durchführen können, sollten Sie so bald wie möglich ein neues, sauberes System installieren.
quelle
Die
/var/lib/dpkg/available
können aus den apt-Daten neu erstellt werden. Der einfachste Weg, dies zu tun, bestand darindselect
, ein Update zu verwenden und auszuwählen. Ich gehe davon aus, dass dies nur funktioniert, wenn Sie als Aktualisierungsmethode ausgewählt haben. Scheint wiedselect
ein:Beachten Sie jedoch, dass sich die Dinge seit Debian Sarge möglicherweise geändert haben.
Es gibt Tricks, die neu erstellt werden müssen
/var/lib/dpkg/status
, da jedes Paket ein Verzeichnis zum/usr/share/doc
Verzeichnis hinzufügen muss . Siehe Beitrag unter http://linuxmafia.com/faq/Debian/package-database-rebuild.html . Es wird ein Skript vorgestellt, das eine gefilterte Liste von / usr / share / doc verwendet, um eine Liste der installierten Pakete zu erstellen und diese dann alle neu zu installieren.quelle
Nun, ich nehme an, Sie könnten die leere Datei neu erstellen und dann apt-get install long-list ausführen, vorausgesetzt, Sie wissen, was Sie beim ersten Mal installiert haben.
Ich habe ein altes Skript, das dies im Grunde aus den kleinsten Paketen macht, die apt-get ausführen können. Bei der Verwendung habe ich Dutzende nicht deklarierter Abhängigkeiten gemeldet.
Wenn Sie nicht alles wissen, was Sie installiert haben, installieren Sie das System neu.
quelle
Unter Linux Mint 17 stieß ich auf ein ähnlich klingendes Problem. Ich war begeistert beim Löschen von Dateien und fand mich dort wieder, wo der "Administration -> Upgrade Manager" einfach nicht glücklich aussah .......
Die Lösung, die für mich funktioniert hat, bestand darin, ein Verzeichnis mit dem Namen "dpkg" gemäß der Fehlermeldung zu erstellen und darin eine leere Datei mit dem Namen "status" zu erstellen.
Ich habe dann Update Manager ausgeführt.
Es hat für mich funktioniert :-)
quelle
Wenn Sie andere Benutzerkonten als 'roo't' hätten, könnten Sie versuchen, ein dist-Upgrade von einem von ihnen durchzuführen. Apt lädt die Archive herunter, kann sie jedoch aufgrund fehlender Verzeichnisse in / var / nicht installieren. Die Verzeichnisse werden angezeigt. Erstellen Sie sie und führen Sie apt-get dist-upgrade erneut aus. Falls das Erstellen von ihnen fehlschlägt, melden Sie sich vom alternativen Konto zurück zum Stammverzeichnis. n Erstellen Sie die Verzeichnisse von dort und führen Sie apt erneut aus. Sie werden über die Logrotate-Konfiguration und einige andere Konfigurationen aufgefordert. Geben Sie einfach Y ein. Fahren Sie bis zum Ende fort und starten Sie den Computer neu, wenn das apt dist-Upgrade abgeschlossen ist. alles sollte jetzt wieder normal sein.
quelle
Wenn Sie ein Himbeer-Pi 3 gekauft haben und das Problem aufgetreten ist und die Fehlermeldung "Datei / var / lib / dpkg / status konnte nicht analysiert oder geöffnet werden" angezeigt wurde, ist dies eine Problemumgehung, die für mich funktioniert hat:
Wie erstelle ich die Datei "/ var / lib / dpkg / status" neu? Nur weil dies keine ungenutzte Datei ist, ist dies eine sehr wichtige Datei, die einige Informationen zu installierten Paketen in Ihrem Raspbian-Betriebssystem enthält. Hier ist also, wie ich neu erstellt wurde ::
Führen Sie ein Wget in Ihrem Raspbian-System durch:
Erteilen Sie einige Berechtigungen:
Analysieren Sie den Dokumentationsordner in Ihrem System und generieren Sie die Statusdatei neu:
Sobald Sie fertig sind, laden Sie die Datei herunter und lesen Sie sie sorgfältig durch. Befolgen Sie die in der Datei beschriebenen Schritte:
quelle
recover1.sh
Zerstört Ihren Strom/var/lib/dpkg/status
ohne zu testen, wenn er bereits in Ordnung ist. Dann wird eine gemischte Trickkiste ausgeführt, um zu versuchen, eine funktionierende Version wiederherzustellen. Führen Sie das obige Skript niemals aus, es sei denn, Sie vermissen die Datei / var / lib / dpkg / status vollständig. Andernfalls ist esstrings /var/lib/dpkg/status
möglicherweise besser, die beschädigte Datei neu zu erstellen.