Es gibt zwar verschiedene Möglichkeiten, Anwendungen in Ubuntu zu installieren, aber ich bevorzuge es, den Befehl apt im Terminal zum Installieren von Software zu verwenden.
Wenn Sie dasselbe tun, können Sie auf einen Abhängigkeitsfehler wie diesen stoßen:
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
green-recorder : Depends: python-urllib3 but it is not installable
E: Unable to correct problems, you have held broken packages.
Normalerweise finden Sie auf It’s FOSS einfache und leicht verständliche Lösungen für komplizierte Probleme. Leider ist dieser nicht so einfach.
In diesem Artikel zur Fehlerbehebung erkläre ich Ihnen, warum dieser Fehler auftritt, und gebe einige Hinweise, wie Sie dieses Problem lösen können.
Warum wird die Fehlermeldung “Sie haben defekte Pakete gehalten” angezeigt?
Sie haben versucht, ein Anwendungspaket zu installieren, höchstwahrscheinlich aus einem PPA- oder Drittanbieter-Repository.
Anwendungen benötigen oft bestimmte Versionen von Bibliotheken und Softwarekomponenten (sogenannte Abhängigkeiten). Diese Abhängigkeiten sind möglicherweise nicht Teil des Anwendungspakets selbst, aber sie werden entweder bereits auf Ihrem System installiert oder während der Installation der Anwendung installiert.
Ihr Linux-System versucht, diese Abhängigkeiten selbst zu installieren. Wenn die Version des Abhängigkeitspakets jedoch nicht auf Ihrem System verfügbar ist, wird es verwirrt, da es keine Möglichkeit gibt, dieses Abhängigkeitsproblem zu lösen.
Aus diesem Grund werden Sie darüber informiert, dass die Software, die Sie installieren möchten, von XYZ abhängt, dieses XYZ jedoch nicht installiert werden kann.
Ein weiterer Anwendungsfall ist, wenn Ihr Paket aufbewahrt werden kann, wenn Sie versuchen, zwei Versionen derselben Software zu installieren. Angenommen, Sie installieren eine bestimmte Version von Wine, während Sie bereits eine andere installiert haben.
So beheben Sie den Fehler „Probleme können nicht behoben werden, Sie haben beschädigte Pakete gehalten“
Sie können ein paar Dinge ausprobieren, damit die Dinge funktionieren. Sie müssen einige Ideen zum Installieren/Entfernen von Paketen in der Linux-Befehlszeile haben, um die Dinge hier zu klären.
Stellen Sie sicher, dass der Paketcache Ihres Systems aktualisiert ist
Stellen Sie zunächst sicher, dass der lokale Paketcache aktualisiert wird. Ihr System überprüft diesen Cache auf verfügbare Pakete. Es ist möglich (aber nicht sicher), dass das Abhängigkeitspaket vom System nach der Cache-Aktualisierung erkannt wird.
sudo apt update
Versuchen Sie, das problematische Paket erneut zu installieren, und prüfen Sie, ob das Problem dadurch behoben wird.
Installieren Sie die Abhängigkeit
Wenn Sie versuchen, das problematische Paket erneut zu installieren und es immer noch über denselben Abhängigkeitsfehler klagt, ist möglicherweise die Abhängigkeit für die Distributionsversion nicht verfügbar.
Sie können den apt-Suchbefehl verwenden, um zu sehen, ob Sie diese Bibliothek aus einem anderen Paket oder Namen erhalten können:
sudo apt search package_name
Wenn das Paket verfügbar ist, ist es dieselbe Version, die von dem Paket angefordert wurde, das Sie installieren wollten?
Versuchen Sie, das Abhängigkeitspaket zu installieren und sehen Sie, was passiert:
sudo apt install dependency_package
Sie können auf eine Abhängigkeitskette stoßen. Sie versuchen, Abhängigkeit A zu installieren, aber sie beschwert sich über B. Dann versuchen Sie, B zu installieren, und sie beschwert sich über C.
Es kann auch vorkommen, dass Paket C bereits installiert ist, wenn Sie versuchen, Paket C zu installieren. Überprüfen Sie die Version von Paket C. Ist es dieselbe Version wie von Paket B gefordert? Wenn ja, kann es hilfreich sein, C zu entfernen und erneut zu installieren.
Können Sie das fehlende Abhängigkeitspaket von einer anderen Quelle beziehen?
Wenn das fehlende Abhängigkeitspaket auf Ihrem System nicht gefunden werden kann (keine Ergebnisse in der apt-Suche), können Sie versuchen, das Abhängigkeitspaket von einer anderen Stelle abzurufen. Ich weiß, das ist nicht sehr bequem, aber Sie haben hier nicht viele Möglichkeiten.
Für example, im Fall der Installation von Shutter, beschwerte es sich über libgoo-canvas-perl und diese Bibliothek ist auf dem Ubuntu-System nicht mehr verfügbar.
sudo apt install shutter
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
shutter : Depends: libgoo-canvas-perl but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Da es jedoch in den vorherigen Versionen von Ubuntu verfügbar war, habe ich dieses Paket im Paketarchiv von Ubuntu gesucht und es unter der Auflistung von Ubuntu 14.04 gefunden Hier. Ich habe die .DEB-Datei heruntergeladen und installiert.
Jetzt, da dieses Abhängigkeitspaket installiert ist, sollte der Versuch, die Originalanwendung (in diesem Fall Shutter) zu installieren, zumindest über dieses Paket nicht mehr klagen.
Wenn Sie das Abhängigkeitspaket nirgendwo finden können, installieren Sie das problematische Paket von einer anderen Quelle
Also im example oben habe ich versucht, die Green Recorder-Anwendung mit ihrem PPA zu installieren. Diese Anwendung benötigt python-urllib3
Bibliothek, aber leider ist diese Bibliothek in meinem Ubuntu 20.04-System nicht verfügbar.
[email protected]:~$ apt search python-urllib3
Sorting... Done
Full Text Search... Done
Dies ist eindeutig eine schlecht verpackte Anwendung. Der Entwickler stellte es für Ubuntu 20.04 zur Verfügung, ohne zu wissen, dass Ubuntu 20.04 Python 2 nicht mehr unterstützt und alle Python-Bibliotheken jetzt mit dem Präfix python3 beginnen. Die python-urllib3 sollte also python3-urllib3 sein.
Wenn Sie sich in einer solchen Situation befinden, schauen Sie vielleicht auf der Homepage des Projekts nach oder suchen Sie im Internet nach einer alternativen Quelle für die Installation. Vielleicht gibt es eine Snap/Flatpak-Version oder ein Benutzer hat ein PPA dafür erstellt? Wenn nichts anderes, können Sie auch die Quellcodeoption verwenden.
Wenn Sie während des Updates den Fehler “Holded Breaked Package” sehen, versuchen Sie dies
Bei den meisten Diskussionen wurde bisher davon ausgegangen, dass dieser Fehler beim Installieren einer neuen Anwendung angezeigt wird. Das kann nicht immer der Fall sein.
Wenn dieser Fehler angezeigt wird, wenn Sie versuchen, Ihr System mit zu aktualisieren sudo apt update-Befehl, dann müssen Sie einen etwas anderen Ansatz wählen.
Überprüfen Sie zunächst mit diesem Befehl, welches Paket gehalten wird:
dpkg --get-selections | grep hold
Wenn Sie feststellen, dass einige Pakete zurückgehalten werden, entfernen Sie sie und fahren Sie dann mit der Aktualisierung Ihres Systems oder der Installation der Software fort.
Sie können auch den Synaptic-Paketmanager verwenden, um die beschädigten Pakete zu reparieren.
Haben Sie es geschafft, das Problem zu beheben?
Wie ich bereits erwähnt habe, gibt es keine einfache Lösung für dieses Problem. Sie müssen selbst nachforschen und sehen, ob das Problem behoben werden kann oder nicht.
Bitte teilen Sie es in den Kommentaren mit, wenn Ihr Problem behoben wird. Wenn nicht, kann ich versuchen, Ihnen zu helfen.