/
/

Defekte Debian-Pakete reparieren: Schritt-für-Schritt-Anleitung

von Team Ninja
How to Fix Broken Debian Packages: A Step-by-Step Guide blog image

Kurzüberblick

Dieser NinjaOne-Blogbeitrag bietet eine umfassende Liste grundlegender CMD-Befehle und einen tiefen Einblick in die Windows-Befehle mit über 70 wichtigen CMD-Befehlen für Anfänger:innen und Fortgeschrittene. Der Blogartikel erklärt praktische Befehle der Eingabeaufforderung für die Dateiverwaltung, die Navigation in Verzeichnissen, die Fehlersuche im Netzwerk, Festplattenoperationen und die Automatisierung mit echten Beispielen zur Steigerung der Produktivität. Egal, ob Sie grundlegende CMD-Befehle lernen oder fortgeschrittene Windows CLI-Tools beherrschen möchten, dieser Leitfaden hilft Ihnen, die Eingabeaufforderung effektiver zu verwenden.

Die wichtigsten Punkte

  • Defekte Debian-Pakete und der Fehler „you have held broken packages“ entstehen meist durch widersprüchliche Pakete, Drittanbieter-Repositorys oder unterbrochene Updates.
  • Der erste Schritt zur Diagnose der verursachenden Pakete sind die APT-Befehle sudo apt-get check oder sudo apt-mark showhold.
  • Die meisten Probleme mit defekten Paketen und nicht erfüllten Abhängigkeiten beheben Sie mit dem Befehl sudo apt install –fix-broken, nachdem Sie alle Paketlisten mit sudo apt update aktualisiert haben.
  • Hartnäckige Konflikte lösen Sie mit dem Terminal-Befehl sudo apt remove –purge package_name, der das problematische Paket vollständig entfernt. Führen Sie danach sudo apt autoremove aus.
  • Für dauerhafte Stabilität Ihres Linux-Systems räumen Sie regelmäßig nicht benötigte Abhängigkeitsdateien und Paket-Caches auf. Im großen Stil gelingt das mit der Lösung von NinjaOne für das Linux-Endpunkt-Management.

Sie fragen sich, wie Sie defekte Debian-Pakete reparieren können? Dieser Leitfaden zeigt Ihnen, wie das unter Debian und Debian-basierten Linux-Distributionen wie Ubuntu gelingt. Er erklärt, wie Sie den Fehler „Unable to correct problems, you have held broken packages“ beheben und woher Paketprobleme unter Debian überhaupt kommen.

Eine visuelle Schritt-für-Schritt-Anleitung finden Sie in der Videoversion des Blogbeitrags So reparieren Sie defekte Debian-Pakete.

Der Fehler „you have held broken packages“ im Detail

Ein „gehaltenes“ Paket wurde vom Debian-Paketmanager zurückgehalten. Es wird also auch dann nicht aktualisiert, wenn eine neuere Version verfügbar ist, um mögliche Kompatibilitäts- oder Stabilitätsprobleme zu vermeiden. Pakete werden automatisiert zurückgehalten, wenn ihre Abhängigkeiten nicht erfüllt oder defekt sind. Ein Paket kann beispielsweise eine andere Version eines bereits installierten Pakets voraussetzen. Systemadministrator:innen können Pakete außerdem manuell zurückhalten, wenn diese nicht automatisiert aktualisiert werden sollen.

Bei den meisten Benutzer:innen, die nicht tief im System herumschrauben, hat der Fehler „Unable to correct problems, you have held broken packages“ eine von zwei Ursachen: Entweder haben Sie Pakete aus einem PPA oder einem Drittanbieter-Repository installiert, die miteinander in Konflikt stehen, oder ein Update aus einem offiziellen Repository wurde unterbrochen und nicht abgeschlossen.

Fehler mit zurückgehaltenen Paketen unter Debian und Ubuntu beheben

Um Fehler durch nicht erfüllte oder defekte Abhängigkeiten unter Debian und Ubuntu zu beheben, müssen Sie zunächst herausfinden, welche Pakete die Meldung auslösen.

Dazu können Sie mit dem Paketmanager apt nach defekten Paketen suchen:

sudo apt-get check

Damit wird die Paketdatenbank auf defekte Pakete geprüft und diese werden aufgelistet. Liegt ein Paketproblem vor, sieht die Ausgabe von apt etwa so aus:

Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages have unmet dependencies:
package_1 : Depends: package_2 (>= 1.0.0) but it is not installed
package_3 : Depends: package_4 but it is not installed

E: Unmet dependencies. Try using -f.

So sehen Sie genau, welche Pakete möglicherweise zurückgehalten werden und weitere Updates blockieren. Gezielt nach zurückgehaltenen Paketen suchen Sie mit:

sudo apt list –upgradable

Zurückgehaltene Pakete sind mit [held back] neben dem Eintrag gekennzeichnet:

Listing… Done
package_1/stable 1.2.3-4 amd64 [upgradable from: 1.2.2-3]
package_2/stable 2.3.4-5 amd64 [held back]
package_3/stable 3.4.5-6 amd64 [upgradable from: 3.4.4-5]

Alternativ listen Sie mit apt-mark alle zurückgehaltenen Pakete auf:

sudo apt-mark showhold

Auch der apt-Befehl, mit dem Sie Software aktualisieren oder installieren, verrät Ihnen oft selbst, welche Pakete das Problem verursachen:

$ sudo apt install package_1
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:

package_1 : Depends: package_2 (>= 2.0) but it is not going to be installed

E: Unable to correct problems, you have held broken packages.

Beachten Sie die Liste der Pakete mit nicht erfüllten Abhängigkeiten am Ende der Ausgabe.

Genauere Informationen zu einem Paket und seinen Abhängigkeiten erhalten Sie mit folgendem apt search-Befehl:

sudo apt search package_name

Dieser liefert Informationen zu den Paketversionen und deren Abhängigkeiten:

package_name/focal 1.2.3-4 amd64

Um anschließend herauszufinden, welche Versionen des zurückgehaltenen Pakets in all Ihren Repositorys verfügbar sind, führen Sie aus:

sudo apt list -a package_name

Die Ausgabe sieht dann etwa so aus:

package_name/focal 1.2.3-4 amd64
package_name/focal-updates 1.2.3-5 amd64
package_name/focal-backports 1.2.3-6 amd64

Danach können Sie die Abhängigkeiten des Pakets prüfen:

sudo apt-cache depends package_name

Sobald Sie wissen, welche Pakete die Fehler durch nicht erfüllte oder defekte Abhängigkeiten auslösen und warum sie zurückgehalten werden, können Sie mit der Reparatur beginnen.

Defekte Debian- und Ubuntu-Pakete reparieren

Um Probleme mit zurückgehaltenen Paketen unter Debian und Ubuntu zu beheben, einschließlich des Fehlers „You have held broken packages“, können Sie die folgenden Methoden ausprobieren.

Aktualisieren Sie zunächst Ihre Paketlisten und die installierten Pakete:

sudo apt update
sudo apt upgrade

Versuchen Sie danach die Installation erneut. Oft, und besonders bei Repositorys von Drittanbietern, löst schon das Aktualisieren aller Paketlisten das Problem.

Sie können Abhängigkeiten auch manuell installieren:

sudo apt install dependency_name

Müssen Sie in Konflikt stehende Abhängigkeiten entfernen, nutzen Sie:

sudo apt remove package_name

…und wenn Sie ein Paket vollständig entfernen möchten, inklusive aller Konfigurationsdateien:

sudo apt remove –purge package_name

Anschließend empfiehlt sich apt autoremove, um Abhängigkeiten zu entfernen, die bei früheren Versuchen automatisiert installiert wurden. So starten Sie mit einem sauberen Stand.

Wie immer gilt: Prüfen Sie vorab, was ein Befehl bewirkt, und schätzen Sie die möglichen Auswirkungen auf Ihr System ein. Wenn Sie bei einem apt-Befehl unsicher sind, können Sie ihn mit dem Parameter –dry-run simulieren und die Ausgabe ansehen, ohne Ihr System tatsächlich zu verändern:

sudo apt install package_name –dry-run

Wenn nichts davon hilft, können Sie versuchen, die Sperre des Pakets manuell aufzuheben. Empfehlenswert ist das allerdings nicht, denn in der Regel werden Pakete aus gutem Grund zurückgehalten, und Sie sollten alles daransetzen, Abhängigkeitsprobleme über den Paketmanager zu lösen.

dpkg als letzte Option

Schlagen apt-Befehle wegen eines kritisch defekten Abhängigkeitszustands komplett fehl, müssen Sie apt unter Umständen umgehen und direkt mit dem systemnäheren Paketwerkzeug dpkg arbeiten. Führen Sie den Befehl sudo dpkg –configure -a aus, um alle teilweise installierten oder konfigurierten Pakete zu verarbeiten. Ist das abgeschlossen, führen Sie direkt im Anschluss sudo apt install -f aus (die Kurzform von –fix-broken), damit apt den resultierenden Abhängigkeitsbaum bereinigen kann.

Die Sperre eines zurückgehaltenen Pakets heben Sie manuell so auf:

sudo apt-mark unhold package_name

Bevor Sie das Paket erneut installieren, sollten Sie apt dazu bringen, verbleibende fehlende Abhängigkeiten und Abhängigkeitsprobleme zu beheben:

sudo apts install –fix-broken

Beachten Sie: –fix-broken installiert zurückgehaltene Pakete nicht, solange sie weiterhin gesperrt sind.

Testen Sie Ihr System nach jeder Fehlerbehebung oder Reparatur gründlich: Führen Sie apt update und apt upgrade erneut aus und stellen Sie sicher, dass beide Befehle fehlerfrei durchlaufen. In geschäftskritischen Umgebungen sollten Sie zusätzlich die Funktionsfähigkeit Ihres Systems prüfen (arbeiten Sie etwa an einem Webserver, vergewissern Sie sich, dass die Webanwendungen erreichbar und funktionsfähig sind). Behalten Sie außerdem Ihre System- und Fehlerprotokolle im Blick, um sicherzugehen, dass alle Probleme vollständig gelöst sind und keine neuen Inkompatibilitäten entstanden sind.

Vorbeugende Maßnahmen gegen nicht erfüllte Abhängigkeiten

Mit diesen vorbeugenden Maßnahmen vermeiden Sie Fehler durch nicht erfüllte Abhängigkeiten und defekte Pakete unter Debian und Ubuntu Linux:

  • Pakete aktuell halten: Aktualisieren Sie Ihre Software regelmäßig mit apt update und apt upgrade.
  • Paketquellen und -listen aktuell halten: Führen Sie nicht nur apt update aus, um Ihre Softwarequellen aktuell zu halten, sondern prüfen Sie auch die Datei /etc/apt/sources.list und das Verzeichnis /etc/apt/sources.list.d/ auf unerwartete oder veraltete Einträge.
  • Software-Repositorys sorgfältig verwalten: Neben der Absicherung Ihrer Linux-Server hilft es, nur vertrauenswürdige Drittanbieter-Repositorys einzubinden (und alle weiteren heruntergeladenen Programme sorgfältig zu prüfen), um Paketprobleme gar nicht erst entstehen zu lassen.
  • Vorsicht bei PPAs (Personal Package Archives): Binden Sie niemals ein PPA oder ein anderes Drittanbieter-Repository ein, ohne dessen Vertrauenswürdigkeit und Stabilität gründlich zu prüfen. Nicht verifizierte Softwarequellen sind die mit Abstand häufigste Ursache für „Dependency Hell“ und massive Systeminstabilität auf Debian-basierten Systemen.
  • Automatisierte Werkzeuge für das Paketmanagement einrichten: Wenn Sie für eine ganze Flotte von Linux-Rechnern verantwortlich sind, sollten Sie Tools ausrollen, mit denen Sie mögliche Stabilitäts- und Kompatibilitätsprobleme aus der Ferne überwachen, vorhersehen und lösen können.
  • Backup: Erstellen Sie regelmäßig vollständige Backups Ihrer Linux-Systeme, damit Sie bei einem schwerwiegenden Problem auf einen funktionierenden Stand zurücksetzen können.

Sorgen Sie außerdem dafür, dass Sie hinter Ihrem Paketmanager aufräumen, indem Sie regelmäßig Abhängigkeiten entfernen, die von deinstallierten Paketen übrig geblieben sind, und den Paket-Cache leeren. Dafür nutzen Sie diese Befehle:

sudo apt autoremove
sudo apt autoclean
sudo apt clean

Der Befehl apt autoremove entfernt automatisiert installierte Pakete (etwa solche, die nur zur Erfüllung anderer Paketabhängigkeiten installiert wurden), die nicht mehr benötigt werden. apt autoclean löscht veraltete Dateien, darunter teilweise installierte Pakete, und apt clean entfernt schließlich weitere nicht benötigte Paketdateien, auch die aktuell installierter Pakete.

Nach dem Aufräumen sollten Sie immer apt update ausführen, damit Ihnen die aktuellen Paketlisten vorliegen.

Dauerhafte Stabilität Ihrer Linux-Umgebungen sicherstellen

Wenn Sie den Fehler „Unable to correct problems, you have held broken packages“ und andere Probleme mit nicht erfüllten oder defekten Abhängigkeiten unter Debian und Ubuntu Linux vollständig lösen, läuft Ihr System wieder. Sie sollten aber auch Ihre allgemeinen Praktiken im Linux-Systemmanagement hinterfragen und überlegen, wie das Problem überhaupt entstehen konnte.

Das Reparieren defekter Pakete ist längst nicht die einzige Wartungsaufgabe, die nötig ist, um Ihre Linux-Infrastruktur verfügbar und sicher zu halten, und nicht immer genügen dafür ein paar Terminal-Befehle. NinjaOne bietet eine bewährte Lösung für das Linux-Endpunkt-Management, mit der Sie Linux-Endpunkte im großen Stil verwalten, patchen und absichern.

FAQs

Dieser Fehler zeigt an, dass der Paketmanager (APT) ein Upgrade blockiert, weil das Paket nicht erfüllte Abhängigkeiten hat. Es benötigt also eine bestimmte Version eines anderen Pakets, die nicht verfügbar ist oder mit einem vorhandenen Paket in Konflikt steht. Typische Ursachen sind unterbrochene Updates oder widersprüchliche Repositorys von Drittanbietern.

Am schnellsten geht es, wenn Sie APT mit dem Befehl sudo apt install –fix-broken anweisen, das Problem zu korrigieren. Führen Sie vorher sudo apt update aus, damit Ihnen die aktuellen Paketlisten aus allen Softwarequellen vorliegen.

Für die Diagnose nutzen Sie den Befehl sudo apt-get check. Er durchsucht die Paketdatenbank und listet Pakete mit nicht erfüllten Abhängigkeiten auf. Welche Pakete manuell vom Upgrade zurückgehalten werden, sehen Sie gezielt mit dem Befehl sudo apt-mark showhold.

Beugen Sie Abhängigkeitsproblemen vor, indem Sie regelmäßig sudo apt update und sudo apt upgrade ausführen und so Ihre gesamte Software aktuell halten. Verzichten Sie außerdem auf nicht vertrauenswürdige oder instabile Drittanbieter-Repositorys (PPAs), die widersprüchliche Pakete ins System bringen können.

Die Sperre eines Pakets manuell aufzuheben, ist in der Regel nicht empfehlenswert, da es die Systemstabilität gefährdet. Möglich ist es mit sudo apt-mark unhold package_name. Versuchen Sie das erst, wenn alle anderen Lösungen über das Paketmanagement gescheitert sind.

Das könnte Sie auch interessieren

Sind Sie bereit, die schwierigsten Aufgaben der IT zu vereinfachen?

NinjaOne Allgemeine Geschäftsbedingungen für Skripte

Indem Sie unten auf die Schaltfläche „Ich akzeptiere“ klicken, erklären Sie Ihr Einverständnis mit den folgenden rechtlichen Bedingungen sowie mit unseren Nutzungsbedingungen:

  • Eigentumsrechte: NinjaOne besitzt und wird weiterhin alle Rechte, Titel und Interessen an dem Skript (einschließlich des Urheberrechts) behalten. NinjaOne gewährt Ihnen eine eingeschränkte Lizenz zur Nutzung des Skripts in Übereinstimmung mit diesen rechtlichen Bedingungen.
  • Einschränkung der Nutzung: Sie dürfen das Skript nur für Ihre legitimen persönlichen oder internen Geschäftszwecke verwenden und es nicht an Dritte weitergeben.
  • Verbot der Wiederveröffentlichung: Sie sind unter keinen Umständen berechtigt, das Skript in einer Skriptbibliothek, die einem anderen Softwareanbieter gehört oder von diesem kontrolliert wird, erneut zu veröffentlichen.
  • Gewährleistungsausschluss: Das Skript wird „wie gesehen“ und „wie verfügbar“ bereitgestellt, ohne jegliche Garantie. NinjaOne gibt keine Versprechen oder Garantien, dass das Skript frei von Fehlern ist oder dass es Ihre speziellen Bedürfnisse oder Erwartungen erfüllt.
  • Risikoübernahme: Die Verwendung des Skripts erfolgt auf eigene Gefahr. Sie erkennen an, dass die Nutzung des Skripts mit bestimmten Risiken verbunden ist, und Sie verstehen und übernehmen jedes dieser Risiken.
  • Verzicht und Freigabe: Sie machen NinjaOne nicht für nachteilige oder unbeabsichtigte Folgen verantwortlich, die sich aus Ihrer Nutzung des Skripts ergeben, und Sie verzichten auf alle gesetzlichen oder billigkeitsrechtlichen Rechte oder Rechtsmittel, die Sie gegen NinjaOne im Zusammenhang mit Ihrer Nutzung des Skripts haben könnten.
  • EULA: Wenn Sie ein NinjaOne-Kunde sind, unterliegt Ihre Nutzung des Skripts dem für Sie geltenden Endbenutzer-Lizenzvertrag (EULA).