Immer wenn ich tippe sudo apt-get remove
und dann die TabTaste für die automatische Vervollständigung drücke, erhalte ich die folgende Meldung:
grep-status: /var/lib/dpkg/status:15945: expected a colon
.
Ich sehe in der Statusdatei in Zeile 15945 nichts Besonderes. Es ist ein Punkt im Beschreibungsfeld eines Monobibliothekspakets und das Einfügen eines Doppelpunkts hat nicht geholfen. Das Entfernen der Linie mit dem Punkt hat ebenfalls nicht funktioniert. Das Überschreiben der Datei mit dem Status "Alt" führte zu derselben Meldung.
Gibt es eine Möglichkeit, die Statusdatei neu zu erstellen?
status
Datei vollständig neu erstellen können: Sie ist eine Hauptinformationsquelle, und viele davon sind zwar redundant, aber nicht alle. Es ist jedoch wahrscheinlich möglich, die Datei manuell zu reparieren. Stellen Sie einen Teil der Datei um die problematische Zeile, z. B.Package:
20 bis 40 Zeilen, einschließlich mindestens einer Zeile vor und nach Zeile 15945.apt-get
,dpkg
und nach wie vor richtig, Freunde und was ist erroring aus Auto-Vervollständigung?Antworten:
Ich habe endlich mein System davon behoben. Das Wiederherstellen eines Backups der Statusdatei hat nicht funktioniert, da ich das Problem so lange hatte, dass es in allen meinen Backups enthalten ist.
Das Update umfasst das Greifen nach den tatsächlichen Formatierungspausen und das manuelle Beheben dieser Pausen. Es ist nicht so schwer, wie es sich anhört.
http://thepcspy.com/read/fixing-dpkg-status-corruption/
quelle
missing package name
und fand heraus, dass ich aus irgendeinem seltsamen Grund, den ich besser nicht verschwenden sollte, eine Leitung hatte,Packaga: landscape-common
die ortographisch repariert und das Problem gelöst war. Die Sache ist, ich habe diese Datei nie berührt, noch hat jemand anderes. Wie kann ein Computer einen Rechtschreibfehler verwechseln?.
dieser Leerzeile ein hinzu].Sie sollten in der Lage sein, mit einer früheren bekannten guten Statusdatei zu arbeiten und von dort aus zu aktualisieren. Jedes Mal, wenn Sie eine Installation oder ein Update durchführen, wird die Statusdatei in einer komprimierten Sicherung unter / var / backups gespeichert . Wenn Sie ein ls -l dpkg * für das Verzeichnis ausführen, wird Folgendes angezeigt :
Es gibt auch eine Sicherung der Datei, die im Verzeichnis / var / lib / dpkg / mit dem Namen status-old erstellt wurde. Wenn Sie für das Verzeichnis den Status ls -l * eingeben, wird Folgendes angezeigt :
Um sich von einer Beschädigung zu erholen, sollten Sie in der Lage sein, Folgendes zu tun:
1. Erstellen Sie eine Sicherungskopie der beschädigten Statusdatei :
2. Kopieren Sie eine aktuelle dpkg-Statusdatei aus einer der oben genannten Quellen:
entweder
oder
3. Führen Sie dann apt-get update aus:
Das sollte es tun.
quelle
sudo apt update && sudo apt dist-upgrade
sollten die meisten Probleme behoben werden, die durch die altestatus
Datei verursacht werden könnten. Wenn Ihr System ein größeres Chaos hat,sudo aptitude dist-upgrade
stattsudo apt ...
manchmal bessere Möglichkeiten vorschlagen , den Bruch zu beheben.Ich konnte dieses Problem beheben, indem ich die Pakete entfernte, die Einträge in der Statusdatei beschädigt hatten.
Die akzeptierte Lösung über pcregrep hat nicht funktioniert (pcregrep hat nichts gefunden).
quelle
Versuchen Sie es mit einem "dpkg -P" für das fehlerhafte Paket. Dadurch wird es aus dem lokalen Repository gelöscht und alle Spuren werden entfernt. Auf meinem System war dies die Korrektur für entfernte (aber noch nicht gelöschte) Pakete, die diesen Fehler verursachten.
quelle
In diesem Fall würde ich die beschädigte
/var/lib/dpkg/status
Datei sichern und sie dann manuell korrigieren (um die Zeilen 1888 und 9550), wobei ich die Informationen von verwendequelle
Dies war ein Fehler (der behoben werden sollte): Launchpad-Fehler 613018
Upstream: Debian-Bug 590885
Dies sollte eine Problemumgehung sein (Backup, "Fix" -Versionszeichenfolge):
quelle
Sohn einer...
Okay, der eigentliche Fehler war in Zeile 15266, obwohl er etwa 700 Zeilen weiter unten gemeldet wurde. Der problematische Eintrag in der Statusdatei wurde durch ein Deb verursacht, das ich installiert habe, um meinen Lexmark Drucker vor langer Zeit zum Laufen zu bringen. Der Eintrag war für das Paket
lexmark-inkjet-08-driver
. Das Feld Beschreibung enthielt keinen.
Zeilenumbruch. Dies verursachte den Parsing-Fehler.Um dies herauszufinden, griff ich auf eine Methode zur Fehlerbehebung bei Schrotflinten zurück und fing an, die Dinge so ziemlich zufällig auszuprobieren. Einer meiner albernen Versuche bestand darin,
grep-status -P e
herauszufinden, dass e der häufigste Buchstabe im Alphabet ist. Dumm, ich weiß, aber der letzte Statusbericht, der ausgedruckt wurde, bevor er sich über einen fehlenden Doppelpunkt beschwerte, betraf das Lexmark-Paket und ich bemerkte das Fehlen eines.
Zeichens, nachdem ich ein paar Minuten lang auf den Bildschirm gestarrt hatte .Wenn möglich, hätte ich gerne eine andere Antwort, die eine bessere Methode zum Auffinden solcher Probleme beschreibt, falls jemand in Zukunft auf ein ähnliches Problem stößt. Vielen Dank.
quelle
grep-status -r -P ^
sollte immer mit einem Paket übereinstimmen, damit die gesamte Datei analysiert und abgebrochen wird, wenn sie nicht analysiert werden kann.Weil mein Status alt war auch mit zu problematisch
apt-get update
,Das hat bei mir ganz gut geklappt:
(als root)
KREDIT: http://alvinalexander.com/blog/post/linux-unix/how-remove-non-printable-ascii-characters-file-unix
Wenn Sie neugierig sind, was sich geändert hat oder wo der Schaden liegen würde: (möglicherweise lang)
quelle