So beheben Sie beschädigte Pakete in Linux

Linuxpackages Broken

Linux-Paketmanager wie Apt und DNF sind äußerst leistungsfähig und intuitiv, aber das bedeutet nicht, dass nicht auch mal etwas schiefgehen kann. Gelegentlich läuft die Installation eines Pakets schief, und Sie müssen die Teile wieder zusammensetzen. Paketmanager haben die Fähigkeit, beschädigte Pakete zu reparieren und fehlerhafte Updates zu überspringen, um Ihr System wieder zum Laufen zu bringen und zukünftige Probleme zu vermeiden.

Dieser Artikel behandelt, wie man beschädigte Pakete in Linux repariert. Diese Lösungen sollten Ihnen in den meisten Fällen helfen, wieder auf den richtigen Weg zu kommen.

Inhaltsverzeichnis

  • Beschädigte Pakete in Ubuntu/Mint/Debian reparieren
  • Beschädigte Pakete in Fedora/CentOS/RHEL reparieren
  • Beschädigte Pakete in Arch reparieren
  • Häufig gestellte Fragen

Beschädigte Pakete in Ubuntu/Mint/Debian reparieren

Apt hat ein paar Flags, um fehlende Abhängigkeiten oder Pakete zu reparieren, die aus einem bestimmten Grund während der Installation beschädigt wurden. Ein häufiger Anwendungsfall wäre die Installation eines Drittanbieter-.deb und die Feststellung, dass es Abhängigkeiten hatte, von denen Sie nichts wussten. Diese Abhängigkeiten werden wahrscheinlich nicht von selbst installiert, und dpkg wird sich beschweren, dass es die Abhängigkeiten nicht auflösen kann. In jedem Fall können Sie die folgenden Schritte versuchen:

Hinweis: Lernen Sie, wie Apt funktioniert, bevor Sie versuchen, eine der folgenden Lösungen anzuwenden.

Linuxpackages Fixmissing

  1. Führen Sie ein Update durch, um sicherzustellen, dass es keine neueren Versionen der erforderlichen Pakete gibt:
sudo apt --fix-missing update
  1. Zwingen Sie Apt, nach fehlenden Abhängigkeiten oder beschädigten Paketen zu suchen und diese zu korrigieren, wenn Sie versuchen, das fehlerhafte Paket erneut zu installieren. Dies installiert alle fehlenden Abhängigkeiten und repariert vorhandene Installationen:
sudo apt install-f

Beheben von DPKG-Konfigurationsproblemen

Ein weiterer Ort, an dem ein Fehler bei der Paketinstallation auftreten kann, ist der Konfigurationsprozess. Hinter den Kulissen kümmert sich dpkg um diesen Teil, sodass, wenn ein Paket während der Konfiguration fehlschlägt, dpkg das Werkzeug zur Behebung ist.

Linuxpackages Configuredpkg

  1. Beginnen Sie damit, dpkg zu zwingen, alle beschädigten oder teilweise konfigurierten Pakete neu zu konfigurieren:
sudodpkg--configure-a
  1. Wenn das das Problem nicht löst, gehen Sie einen entschlosseneren Ansatz. Beginnen Sie damit, alle Pakete aufzulisten, die dpkg als neuinstallationsbedürftig markiert hat:
sudodpkg-l|grep ^..r

Der obige Befehl zeigt Ihnen die Pakete, die Probleme verursachen. Überprüfen Sie im nächsten Schritt, ob die für die Neuinstallation markierten Pakete tatsächlich beschädigt sind. Führen Sie ein sudo apt reinstall durch und achten Sie darauf, welche Pakete bei der Neuinstallation fehlschlagen.

  1. Für jedes Paket, das bei der Neuinstallation fehlschlägt, notieren Sie den Namen und entfernen Sie das beschädigte Paket zwangsweise:
sudodpkg--remove--force-remove-reinstreq[package name]
  1. Dpkg sollte jetzt sauber sein. Führen Sie eine Bereinigung mit Apt durch:
sudo apt clean &&sudo apt update

Mit etwas Glück bringt Sie das zurück zu dem Punkt, an dem Sie angefangen haben. Es wird Ihnen nicht die beschädigten Pakete zurückbringen, die Sie versucht haben zu installieren, aber zumindest wird Apt wieder funktional sein, und Sie können zurückkehren, um zu versuchen, das Paket, das Sie ursprünglich installieren wollten, und seine Abhängigkeiten zu installieren.

Permanenter DPKG-Lock

Es gibt ein weniger häufiges Problem mit dpkg-Locks, die Sie daran hindern, irgendetwas zu tun. Jedes Mal, wenn Sie versuchen, Apt oder dpkg zu verwenden, erhalten Sie einen Fehler, der besagt, dass eine andere Anwendung es bereits verwendet … obwohl das nicht der Fall ist.

Es ist einfach, die Lock-Datei zu löschen, die Sie daran hindert, Apt zu verwenden und zurückzukehren, um das zu tun, was Sie benötigen. Manchmal bleiben diese Lock-Dateien nach einem Installationsfehler oder einem Stromausfall bestehen, was den Prozess stört und verhindert, dass die Datei automatisch entfernt wird. In diesem Fall müssen Sie es selbst tun.

sudorm/var/lib/apt/lists/lock

Zur Sicherheit löschen Sie auch das Lock im Cache.

sudorm/var/cache/apt/archives/lock

Warnung: Stellen Sie vor dem Entfernen dieses Locks sicher, dass er nicht verwendet wird. In Ubuntu gibt es einen Updater, der zusammen mit dem System startet und DPKG/APT sperrt, wenn er nach Updates sucht. Wenn Sie sich nicht sicher sind, ob der Updater läuft, drücken Sie Ihre Win-Taste, um das Aktivitätscenter zu öffnen, und geben Sie “Software Updater” ein, und drücken Sie dann die Eingabetaste, um es zu öffnen.

Linuxpackages Ubuntuupdater

Wenn der Updater sagt, dass er nicht ausgeführt werden kann, und Sie keine Terminals geöffnet haben, in denen Paketmanager im Hintergrund laufen, können Sie mit den obigen Anweisungen fortfahren.

Wenn Sie anstelle des Problems mit den beschädigten Paketen ein Problem mit dem Software-Center haben, das nicht funktioniert, haben wir die Lösungen.

Beschädigte Pakete in Fedora/CentOS/RHEL reparieren

Das Beheben beschädigter Pakete in Fedora/CentOS/RHEL ist ein weniger häufiges Unterfangen. dnf leistet hervorragende Arbeit, um sicherzustellen, dass Pakete korrekt installiert werden. Das gesagt, es ist immer noch nicht perfekt, und manchmal kann es bei der Paketverwaltung durcheinandergehen.

Hinweis: Lernen Sie die Unterschiede zwischen Fedora, CentOS und RHEL.

1. Problematische Pakete auflisten

Der Befehl, um dies auf RHEL-basierten Systemen wie Fedora zu klären, lautet:

sudo rpm -Va

Linuxpackages Rpmverify

Die Option -V dient zur Überprüfung, was bedeutet, dass sie die Informationen zu den installierten Dateien mit den in der rpm-Datenbank gespeicherten Informationen vergleicht. Das Hinzufügen von -a überprüft einfach alle Kernpakete. Dies ist etwas unhilfreich, da es Ihnen normalerweise eine lange Liste von Dateien gibt, aber es kann Ihnen einen Ausgangspunkt geben, wenn Sie Probleme mit einer bestimmten Anwendung haben.

Wenn Sie beispielsweise etwas sehen, das als „fehlend“ in Ihrem Terminal markiert ist, wird Ihnen gesagt, dass in diesem bestimmten Paket fehlende Dateien vorhanden sind.

2. Versuch einer Neuinstallation

Führen Sie ein dnf reinstall für alle Pakete aus, die Sie in dieser Liste sehen und die Ihnen Probleme bereiten könnten.

sudo dnf --refresh reinstall [package name]

Das setzt alle Metadaten auf abgelaufen, sodass es durch jedes Repository, das Sie aktiviert haben, kriecht und nach einer neuen Version dieses Pakets sucht. Wenn Sie feststellen, dass es mit diesem Paket beschädigte Abhängigkeiten gibt, wird DNF sich wahrscheinlich beschweren und Ihnen sagen, dass Sie das Flag --skip-broken verwenden sollen. Dies überspringt einfach dieses Paket vollständig und lässt Sie Ihr System normal aktualisieren.

3. Die letzte Möglichkeit – Pakete entfernen

Wenn Sie den Punkt erreicht haben, an dem Sie --skip-broken verwenden müssen, um Ihre Updates abzuschließen, ist es hygienischer für Ihr System, es vollständig zu entfernen.

Merken Sie sich den Namen des Pakets, das Sie nicht richtig neu installieren konnten, und deinstallieren Sie es:

sudo dnf remove [package name]

Das Schlimmste, was hier passieren könnte, ist, dass Sie einen Kernbestandteil Ihres täglichen Ablaufs entfernen, wie z.B. Ihren Browser, was Sie zwingt, eine Alternative zu finden.

Tipp: Lernen Sie, wie man Flatpak in Fedora verwendet, um Ihre Pakete besser zu verwalten.

Beschädigte Pakete in Arch reparieren

Obwohl der Paketmanager von Arch einige Ähnlichkeiten mit den hier aufgeführten anderen hat (d.h. er hat eine Datenbank-Lock-Datei und zieht Abhängigkeiten auf ähnliche Weise ein), ist er in Bezug auf die Struktur seiner Logik ein völlig anderes Tier. Der erste Schritt zur Diagnose Ihres Problems besteht darin, sicherzustellen, dass die Repositories auf dem neuesten Stand sind und einen vollständigen Upgrade-Versuch zu unternehmen:

sudo pacman -Syu

Wenn Ihre Versuche, Ihr Paket zu installieren oder ein Systemupgrade durchzuführen, weiterhin fehlschlagen, müssen wir die Ursache isolieren, je nachdem, was das Terminal Ihnen gesagt hat:

Hinweis: Lernen Sie, wie pacman funktioniert, bevor Sie versuchen, es zu reparieren.

„Ungültiges oder beschädigtes Paket“

Änderungen an „pacman.conf“ in irgendeiner Weise vorzunehmen, kann Probleme verursachen, die dazu führen, dass pacman Pakete fälschlicherweise als beschädigt kennzeichnet. Der wahrscheinlichste Übeltäter hier ist eine partielle („.part“) Datei im Cache des Paketmanagers, und Ihre Lösung besteht darin, sie zu entfernen:

sudofind/var/cache/pacman/pkg/-iname"*.part"-delete

Es besteht immer die Möglichkeit, dass das Paket, das Sie zu installieren versuchen, tatsächlich beschädigt ist und keine gültigen Metadaten für den Paketmanager von Arch bereitstellt. In diesem Fall müssen Sie warten, bis der Paketbetreuer es aktualisiert. Wenn das Paket auf Ihrem System installiert ist und während eines Upgrades Probleme verursacht, entfernen Sie es mit:

sudo pacman -Rns[package name]

„Datenbank kann nicht gesperrt werden“

Wie Debians apt erstellt auch Archs Paketmanager während der Operationen eine Lock-Datei. Wenn Sie einen Stromausfall erlebt haben oder pacman einen harten Interrupt erfahren hat und die Lock-Datei nicht entfernen konnte, ist es sehr wahrscheinlich, dass eine Lock-Datei zurückgelassen wurde.

Zuerst müssen Sie herausfinden, ob ein Prozess auf Ihrem Computer die Datei noch verwendet:

sudofuser/var/lib/pacman/db.lck

Im obigen Bild verwendet ein Prozess mit der ID 121497 die Datei-Lock. Wenn Sie neugierig auf den Prozess sind und mehr Informationen möchten, verwenden Sie ps:

ps-p[PID#]

In meinem Fall besitzt eine andere pacman-Instanz die Lock-Datei. Der sicherste Weg, die Lock zu entfernen, besteht darin, zuerst diesen Prozess zu beenden:

sudokill[PID#]

Jetzt, da der Prozess tot ist, entfernen Sie die Lock-Datei:

sudorm/var/lib/pacman/db.lck

Jetzt sind Sie bereit!

„Konfliktierende Dateien/Datei existiert im Dateisystem“

Dies geschieht während Upgrades, bei denen pacman einen Konflikt im Besitz erkennt. Bevor Sie etwas reparieren, achten Sie auf den Pfad zur Datei, über die sich der Paketmanager beschwert.

Um herauszufinden, wem die Datei gehört:

pacman -Qo[path to the file]

Wenn sie einem Benutzer gehört und nicht einem anderen Paket, entfernen Sie sie einfach:

sudorm[path to the file]

Wenn sie einem anderen Paket gehört, ist es am sichersten, zu warten, bis der Betreuer des Pakets diesen Konflikt selbst behebt. Manchmal ist das jedoch keine Option, und Sie möchten die Dinge jetzt erledigen.

Der einfachste Weg, dies zu erreichen, besteht darin, das --overwrite-Flag in pacman zu verwenden. Seien Sie sich jedoch bewusst, dass dies allgemein unsicher ist und dazu führen könnte, dass einige Anwendungen auf Ihrem System nicht korrekt funktionieren. Ich empfehle, vorher ein Backup zu erstellen.

Das --overwrite-Flag ermöglicht es dem Paketmanager von Arch, die Besitzregeln für eine bestimmte Datei zu ignorieren und einfach durch das Update zu drängen. Beispiel:

sudo pacman -Syu--overwrite[file name]

Wenn der obige Befehl nicht funktioniert, ersetzen Sie den Dateinamen durch seinen absoluten Pfad. Einige Benutzer haben berichtet, dass das Entfernen des führenden Schrägstrichs („/“) vor dem Pfad den Befehl funktionieren lässt, wenn er hartnäckig ist.

Alternativ könnten Sie auch einfach pacman anweisen, alles zu überschreiben, was es benötigt:

sudo pacman -Syu--overwrite='*'

„Ungültiges oder beschädigtes Paket (PGP-Signatur)“

In einigen schlecht gewarteten Paketen hat der Entwickler möglicherweise nicht die Zeit oder die Bereitschaft, die digitale Signatur, die ihr Paket zertifiziert, ordnungsgemäß zu aktualisieren. Dies wird schließlich zu einer Nachricht in Ihrem Terminal führen, während Sie versuchen, es zu installieren, wie „Signatur von [jemand] ist marginales Vertrauen“, gefolgt von der Aufforderung des Paketmanagers, ob Sie die Datei löschen möchten.

Da die Signaturupdates vollständig vom Betreuer abhängen, gibt es nichts, was Sie realistisch tun können, um die Situation von Ihrem Terminal aus zu beheben. Wenn Sie ein Update durchführen und das Paket behalten möchten, verwenden Sie das --ignore-Flag für dieses spezielle Paket:

sudo pacman -Syu--ignore[package name]

Wenn Sie dies für viele Pakete erhalten, könnte Ihr Schlüsselbund veraltet sein. Aktualisieren Sie ihn mit:

sudo pacman -S archlinux-keyring

Häufig gestellte Fragen

Kann ich die Arch-Reparaturen mit einem AUR-Helfer anwenden?

Im Allgemeinen ja. Ersetzen Sie „pacman“ durch Ihren AUR-Helfer in den Befehlen in diesem Leitfaden. Beispiel: yay -Qo /path/to/file

Was soll ich tun, wenn ich ein Update unterbreche?

Das Unterbrechen eines Update-Prozesses, entweder durch Drücken von Ctrl + C, das Beenden des Prozesses des Paketmanagers oder das vorzeitige Schließen des Terminals, führt zu einer gewissen Korruption in Ihrer Paketdatenbank, die die Dinge komplizieren könnte, wenn Sie versuchen, etwas anderes zu installieren. Um dies zu beheben, leeren Sie den Cache und wiederholen Sie das Update.

Bildnachweis: Flickr. Alle Screenshots von Miguel Leiva-Gomez.