GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fehlerhaft, fehlende Abhängigkeiten, was nun?

Das Problem, mit dem Sie konfrontiert sind, ist wie folgt. Sie haben versucht, ein regelmäßiges Update auf Ihrer Linux-Box auszuführen, höchstwahrscheinlich einem Ubuntu- oder Debian-basierten System, das apt als Paketmanager verwendet. Nachdem Sie den Repo-Inhalt aktualisiert haben, haben Sie den Befehl dist-upgrade ausgeführt und sind bald auf einen Fehler gestoßen. Apt beschwerte sich über fehlende oder defekte Abhängigkeiten und schlug vor, den Befehl mit --fix-broken oder ähnlichem erneut auszuführen. Dies scheint jedoch nicht zu helfen.

Ich bin auf dieses Problem vor ein paar Wochen auf KDE Neon gestoßen. Das Problem hat mich sehr genervt, denn ohne Expertenwissen gibt es keinen Ausweg. Sie haben ein unbrauchbares System, das nicht zuverlässig aktualisiert werden kann. Das ist so spröde, und wir sind im Jahr 2020, wenn man von Software ein gewisses Maß an Robustheit erwarten würde. LELZ. Ich habe Neon in der Vergangenheit für seine Widerstandsfähigkeit gelobt, aber dann ging es weiter und machte seine eigene Arbeit zunichte. Wie auch immer, lassen Sie mich Ihnen zeigen, wie Sie dieses Problem lösen können.

Problem im Detail

Folgendes sehen Sie in der Befehlszeile:

dpkg:Fehler beim Bearbeiten des Archivs /var/cache/apt/archives/calligraplan_1%3a3.2.2+p18.04+
git20191212.1837-0_amd64.deb (--unpack):
Versuch, '/ zu überschreiben usr/share/locale/ar/LC_MESSAGES/calligraplan.mo', das auch im Paket calligra-data 1:3.1.0+p18.04+git20191222.0027-0 enthalten ist
dpkg-deb:error:paste subprocess wurde durch ein Signal beendet (Broken Pipe)
Bei der Verarbeitung sind Fehler aufgetreten:
/var/cache/apt/archives/calligraplan_1%3a3.2.2+p18.04+
git20191212.1837-0_amd64 .deb
E:Der Unterprozess /usr/bin/dpkg hat einen Fehlercode (1) zurückgegeben

In meinem Fall war das wacklige Paket Calligra. Ich bin mir nicht sicher, warum es überhaupt da war, aber hey, wir müssen das beheben, richtig. Das Standardverfahren besteht also darin, apt mit der Option --fix-broken auszuführen. Oder vielleicht könnten Sie es mit --ignore-missing versuchen, einer anderen gültigen Option. Außer du triffst eine zyklische Abhängigkeitshölle, und es gibt keinen Ausweg.

sudo apt --fix-broken install
Paketlisten lesen... Fertig
Abhängigkeitsbaum erstellen
Zustandsinformationen lesen... Fertig
Vielleicht möchten Sie 'apt -- ausführen fix-broken install“, um diese zu korrigieren.
Die folgenden Pakete haben unerfüllte Abhängigkeiten:
calligra :Hängt ab von:calligraplan (>=1:3.1.0+p18.04+git20191222.0027-0) aber 1:3.1.0+p18.04+ git20191119.0027-0 ist installiert
calligraplan :Hängt ab:calligra-libs (=1:3.1.0+p18.04+git20191119.0027-0) aber 1:3.1.0+p18.04+git20191222.0027 -0 ist installiert
E:Unerfüllte Abhängigkeiten. Versuchen Sie 'apt --fix-broken install' ohne Pakete (oder geben Sie eine Lösung an).

Zu diesem Zeitpunkt können Sie Calligra nicht wirklich entfernen, da sich der Paketmanager bereits in einem instabilen Zustand befindet. Der logische Schritt wäre, dieses spezielle Paket oder jedes kaputte Paket zu ignorieren, indem Sie die Option --ignore-missing oder ähnliches verwenden, leider scheint dies auch nicht zu funktionieren. Also ist das System kaputt.

Lösung

Die einzige Möglichkeit, dieses Problem zu umgehen, besteht darin, die Statusdatei des Paketmanagers tatsächlich zu bearbeiten und jede Erwähnung der betroffenen Pakete und ihrer Abhängigkeiten manuell zu entfernen, damit apt den fehlerfreien Teil fortsetzen und installieren kann. Nun, das ist keine gute Sache, denn Sie werden mit ungepatchter Software zurückbleiben – in einigen Fällen könnte dies wichtiges, mit dem Internet verbundenes Zeug sein, vielleicht sogar mit einer oder zwei echten Schwachstellen, oder vielleicht Software mit Fehlern, die sich manifestieren, wenn Sie arbeiten (z. B. eine der kritischen Systembibliotheken). Aber es ermöglicht Ihnen, weiter zu arbeiten und vielleicht irgendwann in der Zukunft eine ordentliche Menge an Updates zu erhalten.

An dieser Stelle müssen Sie /var/lib/dpkg/status in einem Texteditor als root öffnen. An diesem Punkt bin ich auf ein weiteres dummes Problem gestoßen, und das ist die Tatsache, dass Sie Kate wegen möglicher Sicherheitslücken "angeblich" nicht als Root starten können. Vollkommener Unsinn.

sudo kate /var/lib/dpkg/status
Das Ausführen von Kate mit sudo ist aufgrund nicht behebbarer Sicherheitslücken nicht möglich.

Aber Sie können sudo su - und dann Kate als root ausführen, kein Problem. Dies ist einer dieser „Lass uns ein Problem zu einer Lösung finden“-Fälle, weil es keinen wirklichen Einfluss auf die eigentliche Arbeit hat und überhaupt keinen Unterschied macht, außer dass es die Benutzer ärgert. Als ob Sie nicht einfach ein Terminalfenster öffnen und Sachen mit sudo löschen könnten, wenn Sie möchten.

Öffne die Datei. Dies ist nur eine lange Liste von Paketen, die installiert werden sollen. Jedes Paket enthält eine Beschreibung, Version und alle Abhängigkeiten. Für mich bestand die Lösung darin, nach einer Erwähnung des Wortes Calligra zu suchen und dann diese Paketblöcke einfach aus der Statusdatei zu löschen. Im Allgemeinen veranschaulicht diese Datei das Durcheinander ziemlich gut, mit all den verschiedenen Abschnitten für Abhängigkeiten, Empfehlungen, Unterbrechungen und so weiter.

Paket:libzxingcore1
Status:install ok installed
Priorität:optional
...
Version:1.0.7-1+18.04+bionic+build2
Hängt ab:libc6 (>=2.14), libgcc1 (>=1:3.4), libstdc++6 (>=5.2)
...

Paket:mokutil
Status:Installation ok installiert
Priorität:optional
...
Version:0.3.0+1538710437.fb6250f-0ubuntu2~18.04.1
Hängt ab:libc6 (>=2.14), libefivar1 (> =34), libssl1.1 (>=1.1.0)
...

Paket:libkf5itemviews-dev
Status:install ok installed
Priorität:optional
...
Version:5.65.0+p18.04+git20191222.0152-0
Ersetzt:libkf5itemviews-doc (<<5.61.90-0)
Hängt ab von:libkf5itemviews5 (=5.65.0+p18.04+git20191222.0152-0), qtbase5-dev (>=5.8.0~)
Empfohlen:libkf5itemviews-doc (=5.65.0+p18.04+git20191222. 0152-0)
Unterbrechungen:kio-dev (<<5.28), libkf5iconthemes-dev (<<5.51), libkf5kcmutils-dev (<<5.51), libkf5kio-dev (<<5.51), libkf5xmlgui-dev (<<5.51)
...

Aber unser Ziel ist einfach - widersprüchliche Einträge zu löschen und unser System funktionieren zu lassen. Nachdem ich dies abgeschlossen hatte, konnte ich den apt-Paketmanager erneut ausführen und die Aktualisierungen abschließen. Arbeit erledigt.

Schlussfolgerung

Ich bin überrascht und bestürzt darüber, dass wir uns in einem Zustand befinden, in dem eine schlecht verpackte Komponente den Systemzustand in Linux vollständig ruinieren kann. Und die Sache ist die, dass es viele Möglichkeiten gibt, dies zu verhindern, wenn Linux nur als Produkt entwickelt wurde und nicht als eine Reihe fragmentierter Funktionen von Entwicklern, die das Gesamtbild der tatsächlichen Nutzung nicht sehen. Überprüfen Sie beispielsweise, ob alle Pakete intakt sind, BEVOR Sie die Installation ausführen. Automatisches Entfernen fehlerhafter Pakete, wenn sie identifiziert werden. Fordern Sie den Benutzer auf. Die fehlerhafte Komponente auf die schwarze Liste setzen. Irgendwas, irgendetwas.

Aber das war ein Problem im Jahr 2000 und es ist immer noch ein Problem im Jahr 2020, und deshalb verwende ich hauptsächlich Windows in meinem Produktions-Setup, weil Leiden nicht mein zweiter Vorname ist. Wenn Sie feststellen, dass Sie auf der Befehlszeile apten und die Dinge schief gehen, sollten Sie sich die Statusdatei ansehen. Es wird Ihnen helfen, defekte oder fehlende Abhängigkeiten zu umgehen und Ihre Box zu aktualisieren. Traurig aber glücklicherweise sind wir hier fertig.


Linux
  1. Linux-Paketmanager:dnf vs apt

  2. Linux-Paketverwaltung mit apt

  3. Was ist Ihr Lieblings-Linux-Paketmanager?

  4. Was sind build-essential und build-dep?

  5. Was ist der Zweck von cd ` (Backtick)?

Ubuntu-Paketverwaltung mit apt

Was ist neu in Ubuntu 21.04 – Jetzt herunterladen!

MX Linux MX-19.2 KDE - Fehlt in Aktion

Linux-VPN-Plug-in-Fehler – Was nun?

Plasma-Desktop kstart:Verbindung zum X-Server nicht möglich - Was nun?

Der apt-Befehl – ​​Ein praktischer Gebrauchsleitfaden