Fehlerbehebung bei Ubuntu APT: Korrekte Pakete, Haltepunkte und GPG-Fehler beheben
Ubuntu APT reparieren – ohne Ratearbeit.
APT-Fehler sind auf langläufigen Ubuntu-Systemen häufig und treten meist nach einem Release-Upgrade, einer Änderung eines Drittanbieter-Repositorys, der Entfernung eines PPA, einer manuell installierten .deb-Datei oder einer unterbrochenen Paketinstallation auf.
Die Fehlermeldung kann dramatisch wirken, aber die meisten APT-Probleme sind nicht mysteriös – es handelt sich um Zustandsprobleme, bei denen die Sicht von APT auf Repositorys, Versionen und installierte Pakete nicht mehr übereinstimmt.

APT versucht, vier Fragen zu beantworten:
- Welche Repositorys sind aktiviert?
- Welche Paketversionen sind verfügbar?
- Welche Pakete sind bereits installiert?
- Welche Paketänderungen sind erlaubt?
Wenn diese Antworten im Konflikt stehen, erhalten Sie zurückgehaltene Pakete, gebrochene Abhängigkeiten, fehlende öffentliche Schlüssel, PPA-Fehler oder Pakete, die während des Upgrades zurückgehalten wurden. Dieser Leitfaden bietet Ihnen eine praktische Fehlerbehebungssequenz für Ubuntu APT, geschrieben für Entwickler, DevOps-Ingenieure und Linux-Nutzer, die das System beheben möchten, ohne blind zufällige Befehle aus Forenbeiträgen zu kopieren. Kombinieren Sie dies mit unserem Ubuntu APT und dpkg Cheat Sheet für alltägliche Installations- und Upgrade-Befehle, und stöbern Sie in der größeren Entwickler-Tools-Sammlung für verwandte Linux-Workflows.
Die Kurzversion
Wenn Ihr System nur leicht beschädigt ist, beginnen Sie hier:
sudo apt update
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo apt update
sudo apt upgrade
Wenn Pakete zurückgehalten werden:
apt list --upgradable
apt-mark showhold
sudo apt full-upgrade
Wenn ein PPA oder ein Drittanbieter-Repository fehlschlägt:
ls /etc/apt/sources.list.d/
sudo apt update
Lesen Sie die fehlerhafte Repository-Zeile und deaktivieren oder beheben Sie dieses Repository. Wenn Sie NO_PUBKEY sehen, importieren Sie keine zufälligen Schlüssel von einem Keyserver blind – finden Sie die offiziellen Repository-Anweisungen, installieren Sie den Repository-Schlüssel in /etc/apt/keyrings und binden Sie ihn mit signed-by an dieses Repository.
Bevor Sie etwas beheben: Lesen Sie zuerst den APT-Fehler
Führen Sie dies zuerst aus:
sudo apt update
Überspringen Sie es nicht. apt update aktualisiert die Paketmetadaten. Es aktualisiert keine Pakete. Es teilt Ihnen mit, ob Ubuntu alle konfigurierten Repositorys lesen und deren Metadaten verifizieren kann.
Überprüfen Sie dann Ihre Ubuntu-Version und den Codenamen – ein veralteter Release-Name in /etc/apt/sources.list.d/ ist eine häufige Ursache für 404- und Release-Datei-Fehler. Wenn Sie nicht sicher sind, welche Version Sie verwenden, sehen Sie unter wie man die Ubuntu-Version überprüft:
lsb_release -a
Oder:
cat /etc/os-release
Überprüfen Sie auch, was aktualisierbar ist:
apt list --upgradable
Und prüfen Sie, ob ein Paket zurückgehalten wird:
apt-mark showhold
Dies gibt Ihnen die erste Aufspaltung im Entscheidungsbaum – die Identifizierung der Fehlerklasse zuerst macht die Fehlerbehebung einfacher, da jede Klasse eine andere erste Behebung erfordert:
- Repository-Problem:
apt updateschlägt fehl. - Abhängigkeitsproblem:
apt updatefunktioniert, aber Installation oder Upgrade schlägt fehl. - Problem mit zurückgehaltenen Paketen: APT weigert sich, bestimmte Pakete zu ändern.
- Problem mit gemischten Quellen: Ein PPA, ein manuelles
.deboder ein altes Repository bietet inkompatible Versionen an. - Problem mit unterbrochener Installation:
dpkghat Pakete extrahiert, die nie konfiguriert wurden.
Häufige Ubuntu APT-Ausfalltypen
Zurückgehaltene Pakete
Ein zurückgehaltenes Paket ist nicht immer ein Fehler; es bedeutet, dass APT entschieden hat, ein Paket mit dem aktuellen Befehl nicht zu aktualisieren. Dies geschieht oft, wenn das Upgrade die Installation neuer Abhängigkeiten, das Entfernen alter Pakete oder eine Änderung eines Pakets erfordert, die ein einfaches apt upgrade nicht durchführen wird.
Überprüfen Sie die Details:
apt list --upgradable
apt-cache policy package-name
Versuchen Sie ein vollständiges Upgrade nur nach dem Lesen dessen, was APT tun möchte:
sudo apt full-upgrade
full-upgrade darf neue Pakete installieren und Pakete entfernen, wenn dies zur Vollendung des Upgrades erforderlich ist. Das ist nützlich, aber es ist auch der Grund, warum Sie die vorgeschlagenen Änderungen vor der Akzeptanz lesen sollten. Auf einer Workstation ist full-upgrade nach Überprüfung normalerweise in Ordnung; auf einem Server sollten Sie die Entfernungen zweimal lesen.
Zurückgehaltene Pakete (Holds)
Ein zurückgehaltenes Paket (Hold) unterscheidet sich von einem Paket, das nur zurückgehalten (kept back) wird. Ein Hold ist eine explizite Anweisung, die APT davon abhält, dieses Paket automatisch zu installieren, zu aktualisieren oder zu entfernen. Holds sind nützlich, um eine Kernel-, Datenbank-, Treiber- oder Runtime-Version zu fixieren, und sie werden auch leicht vergessen.
Liste der zurückgehaltenen Pakete:
apt-mark showhold
Ein Paket zurückhalten:
sudo apt-mark hold package-name
Ein Hold entfernen:
sudo apt-mark unhold package-name
Wenn Sie Abhängigkeitsfehler in Bezug auf ein zurückgehaltenes Paket sehen, entscheiden Sie, ob der Hold noch beabsichtigt ist. Entfernen Sie Holds nicht automatisch. Sie können eine Produktionsdienstleistung, einen Treiber oder eine kompatibilitätsempfindliche Toolchain schützen.
Gebrochene Abhängigkeiten
Gebrochene Abhängigkeiten bedeuten, dass APT keinen gültigen Paketsatz finden kann, was normalerweise auf einen Versionskonflikt hinweist, nicht auf eine beschädigte Downloaddatei.
Häufige Ursachen sind:
- Ein Paket erfordert eine Version, die nicht verfügbar ist.
- Ein PPA bietet eine neuere Bibliothek an, als Ubuntu erwartet.
- Ein manuell installiertes
.debhängt von Paketen einer anderen Version ab. - Eine Paketinstallation wurde unterbrochen.
- Ein Repository für die falsche Ubuntu-Version ist aktiviert.
- Paket-Pinning oder Holds verhindern die erforderliche Versionsänderung.
Beginnen Sie mit:
sudo dpkg --configure -a
sudo apt --fix-broken install
Untersuchen Sie dann das Paket:
apt-cache policy package-name
apt-cache depends package-name
apt-cache rdepends package-name
Verwenden Sie dann diese Befehle, um den Paketversionskonflikt zu finden, der APT blockiert, anstatt jede Reparaturbefehlssequenz nacheinander auszuführen.
GPG-Schlüssel- und NO_PUBKEY-Fehler
Ein NO_PUBKEY-Fehler bedeutet, dass APT Repository-Metadaten empfangen hat, aber die Signatur nicht verifizieren kann, weil der erforderliche öffentliche Schlüssel fehlt – ein Vertrauensproblem, nicht nur ein Downloadproblem.
Ein typischer Fehler sieht so aus:
The following signatures could not be verified because the public key is not available: NO_PUBKEY ABCD1234EF567890
Alte Anweisungen verwendeten oft apt-key add, aber vermeiden Sie dies für neue Repository-Einrichtungen. Moderne Ubuntu-Systeme sollten einen repository-spezifischen Keyring und signed-by verwenden.
Ein besseres Muster sieht so aus:
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://example.com/repo-key.gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg
echo "deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/apt stable main" \
| sudo tee /etc/apt/sources.list.d/example.list
sudo apt update
Ersetzen Sie die URL und die Repository-Zeile durch die offiziellen Anweisungen des Anbieters.
Der wichtige Teil ist dieser:
signed-by=/etc/apt/keyrings/example.gpg
Diese signed-by-Zeile bindet den Schlüssel an ein Repository, was sauberer und sicherer ist, als jeden Drittanbieterschlüssel in einen globalen Truststore zu legen.
Schlechte PPA- oder Release-Datei-Fehler
PPA-Fehler sehen oft so aus:
The repository does not have a Release file.
Oder:
404 Not Found
Häufige Ursachen:
- Das PPA unterstützt Ihre Ubuntu-Version nicht.
- Sie haben Ubuntu aktualisiert, aber das PPA verweist immer noch auf den alten Codenamen.
- Das PPA wurde gelöscht.
- Der Betreuer hat aufgehört, Pakete zu veröffentlichen.
- Sie haben ein PPA hinzugefügt, das für eine andere Ubuntu-Version bestimmt ist.
Überprüfen Sie Ihren Codenamen:
. /etc/os-release
echo "$VERSION_CODENAME"
Liste der Drittanbieter-Quelldateien:
ls /etc/apt/sources.list.d/
Untersuchen Sie sie:
grep -R "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/
Deaktivieren Sie eine verdächtige Quelle durch Umbenennung:
sudo mv /etc/apt/sources.list.d/example.list /etc/apt/sources.list.d/example.list.disabled
sudo apt update
Wenn APT nach dem Deaktivieren der Datei funktioniert, haben Sie die problematische Quelle gefunden und können sie dauerhaft beheben oder entfernen.
Ein sicheres APT-Fehlerbehebungs-Workflow
Schritt 1: Metadaten aktualisieren
sudo apt update
Wenn dies fehlschlägt, beheben Sie die Repositorys, bevor Sie versuchen, Pakete zu reparieren. APT kann Abhängigkeiten nicht korrekt lösen, wenn sein Paketindex veraltet oder unvollständig ist.
Suchen Sie nach Zeilen, die enthalten:
NO_PUBKEY
Release file
404 Not Found
does not have a Release file
The repository is not signed
Dies sind Repository- oder Vertrauensprobleme, und sie sollten behoben werden, bevor Sie versuchen, Pakete zu reparieren.
Schritt 2: Unterbrochene Paketkonfiguration abschließen
Wenn eine Paketinstallation unterbrochen wurde, kann dpkg Dateien extrahiert haben, aber das Paket nicht konfiguriert haben.
Führen Sie aus:
sudo dpkg --configure -a
Wenn dies erfolgreich ist, fahren Sie fort:
sudo apt --fix-broken install
Wenn es fehlschlägt, lesen Sie den Paketnamen und den Fehler sorgfältig. Das Paket, das am Ende des Fehlers genannt wird, ist oft wichtiger als das Paket, das Sie ursprünglich zu installieren versucht haben.
Schritt 3: APT bitten, Abhängigkeiten zu reparieren
sudo apt --fix-broken install
Dieser Befehl bittet APT, Abhängigkeitsprobleme zu korrigieren, indem fehlende Abhängigkeiten installiert oder Pakete entfernt werden, die nicht erfüllt werden können. Lesen Sie die vorgeschlagene Aktion sorgfältig, insbesondere jede Entfernung.
Seien Sie vorsichtig, wenn APT entfernen möchte:
ubuntu-desktopubuntu-serverlinux-generic- Display-Manager-Pakete
- Netzwerk-Pakete
- Datenbank-Pakete
- Container-Runtime-Pakete
- Desktop-Umgebung-Pakete
Manchmal ist das Entfernen eines Metapakets harmlos. Manchmal ist es ein Warnsignal, dass Ihre Paketquellen schlecht gemischt sind. Akzeptieren Sie keine großen Entfernungen, ohne sie zu verstehen.
Schritt 4: Zurückgehaltene Pakete überprüfen
apt-mark showhold
Wenn ein zurückgehaltenes Paket das Upgrade blockiert, untersuchen Sie es:
apt-cache policy package-name
Wenn der Hold nicht länger benötigt wird:
sudo apt-mark unhold package-name
sudo apt update
sudo apt upgrade
Wenn der Hold beabsichtigt ist, kämpfen Sie nicht gegen APT – beheben Sie das Repository oder die Paketauswahl um den Hold herum, anstatt den Schutz zu entfernen.
Schritt 5: Paketversionen untersuchen
Für ein Paket mit Abhängigkeitsproblemen:
apt-cache policy package-name
Dies zeigt:
- Installierte Version
- Kandidaten-Version
- Verfügbare Versionen
- Welches Repository jede Version bereitstellt
apt-cache policy ist einer der nützlichsten APT-Debugging-Befehle, weil er zeigt, woher jede verfügbare Version stammt.
Beispiel:
apt-cache policy docker-ce
Wenn die Kandidaten-Version von einem unerwarteten PPA oder alten Repository stammt, haben Sie die wahrscheinliche Ursache des Abhängigkeitskonflikts gefunden.
Schritt 6: Nach gemischten Repositorys suchen
Liste der aktivierten Quellen:
grep -R "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/
Suchen Sie nach:
- Alten Ubuntu-Codenames
- Debian-Repositorys auf Ubuntu
- PPAs für eine andere Ubuntu-Version
- Duplizierte Vendor-Repositorys
- Sowohl Snap- als auch APT-Anweisungen für dasselbe Tool gemischt
- Alte
.list-Dateien, die nach der Deinstallation von Software zurückgeblieben sind
Ein häufiges Anti-Pattern ist die Installation eines Tools aus einem Vendor-Repository, gefolgt vom Hinzufügen eines PPA oder eines manuellen .deb, das überlappende Bibliotheken bereitstellt. APT kann viele Quellen handhaben, aber es kann widersprüchliche Absichten nicht in Einklang bringen, es sei denn, Sie richten die Repositorys selbst aus.
Schritt 7: Eine simulierte Installation oder ein Upgrade versuchen
Bevor Sie Änderungen vornehmen, simulieren Sie:
apt -s install package-name
Oder:
apt -s full-upgrade
Die Option -s simuliert die Operation. Sie ist nützlich, wenn Sie sehen möchten, was APT tun würde, ohne das System zu ändern.
Zurückgehaltene Pakete beheben
Zurückgehaltene Pakete auflisten
apt-mark showhold
Wenn nichts ausgegeben wird, sind keine Pakete mit apt-mark zurückgehalten, und Sie können zu Abhängigkeits- oder Repository-Checks übergehen.
Ein Paket absichtlich zurückhalten
sudo apt-mark hold package-name
Gute Gründe, ein Paket zurückzuhalten:
- Eine Kernel-Version ist bekannt, um mit Ihrer Hardware zu funktionieren.
- Ein Datenbank-Upgrade erfordert Planung.
- Ein Treiber-Update bricht Ihre GPU.
- Eine Runtime-Version muss mit der Produktion übereinstimmen.
- Ein Vendor-Paket ist nicht mit der neuesten Abhängigkeit kompatibel.
Schlechte Gründe, ein Paket zurückzuhalten:
- Sie haben einen Befehl aus einem alten Leitfaden kopiert.
- Sie haben vergessen, warum es zurückgehalten wurde.
- Sie vermeiden einen Abhängigkeitsfehler, ohne ihn zu verstehen.
Einen Hold entfernen
sudo apt-mark unhold package-name
Dann aktualisieren und upgraden:
sudo apt update
sudo apt upgrade
Wenn das Paket immer noch nicht aktualisiert wird, war es nicht nur ein Hold-Problem. Überprüfen Sie die Policy:
apt-cache policy package-name
Gebrochene Abhängigkeiten beheben
Die Standard-Reparatursequenz
Verwenden Sie diese Sequenz, wenn die Paketinstallation oder das Upgrade halbwegs fehlgeschlagen ist:
sudo apt update
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo apt upgrade
Diese Reihenfolge ist wichtig, da jeder Schritt den Boden für den nächsten bereitet: apt update aktualisiert Repository-Metadaten, dpkg --configure -a beendet die Konfiguration extrahierter Pakete, apt --fix-broken install lässt APT fehlende oder widersprüchliche Abhängigkeiten in Einklang bringen, und apt upgrade setzt normale Paket-Updates fort.
Ein schlecht installiertes lokales Paket entfernen
Wenn das Problem nach der Installation eines heruntergeladenen .deb begann, untersuchen Sie es:
dpkg -l | grep package-name
apt-cache policy package-name
Entfernen Sie es:
sudo apt remove package-name
Wenn Konfigurationsdateien auch Probleme verursachen:
sudo apt purge package-name
Dann reparieren:
sudo apt --fix-broken install
Ein beschädigtes Paket neu installieren
Wenn ein Paket installiert, aber beschädigt ist:
sudo apt install --reinstall package-name
Dies ist nützlich, wenn Dateien fehlen oder beschädigt sind, die Paketquellen aber anderweitig gesund sind und Sie die installierten Dateien aktualisieren möchten, ohne die Versionen zu ändern.
PPA- und Drittanbieter-Repository-Probleme beheben
PPAs und Drittanbieter-Repositorys finden
ls /etc/apt/sources.list.d/
Aktive Repository-Zeilen anzeigen:
grep -R "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/
Auf neueren Ubuntu-Systemen können Sie auch .sources-Dateien im deb822-Format sehen:
ls /etc/apt/sources.list.d/*.sources
Anzeigen:
cat /etc/apt/sources.list.d/*.sources
Ein PPA sicher deaktivieren
Quelldatei umbenennen:
sudo mv /etc/apt/sources.list.d/example.list /etc/apt/sources.list.d/example.list.disabled
sudo apt update
Für deb822-Dateien:
sudo mv /etc/apt/sources.list.d/example.sources /etc/apt/sources.list.d/example.sources.disabled
sudo apt update
Das Umbenennen der Quelldatei ist reversibel und sicherer als das sofortige Löschen der Repository-Konfiguration, da Sie sie zurückbenennen können, wenn Sie die falsche Quelle deaktiviert haben.
Pakete von einem PPA entfernen
Das Deaktivieren eines PPA stoppt zukünftige Paketdownloads daraus. Es downgradedt nicht automatisch Pakete, die bereits von diesem PPA installiert wurden.
Wenn das PPA Bibliothetskonflikte verursacht hat, müssen Sie Pakete möglicherweise auf Ubuntu-Versionen downgraden.
Installieren Sie ppa-purge:
sudo apt install ppa-purge
Dann das PPA bereinigen:
sudo ppa-purge ppa:owner/name
Verwenden Sie ppa-purge sorgfältig und lesen Sie die vorgeschlagenen Änderungen vor der Akzeptanz, da es mehrere verwandte Pakete entfernen oder downgraden kann.
Nach einem Release-Upgrade
Nach dem Upgrade von Ubuntu sind alte PPAs eine häufige Fehlerquelle.
Suchen Sie nach alten Codenames:
grep -R "jammy\|noble\|oracular\|plucky" /etc/apt/sources.list /etc/apt/sources.list.d/
Passen Sie die Codenames für Ihr reales System an. Wenn Sie beispielsweise auf Ubuntu 24.04 sind, ist Ihr Codename noble. Wenn eine Drittanbieter-Quelle immer noch auf einen älteren Codenamen verweist, überprüfen Sie, ob dieser Anbieter Ihre aktuelle Ubuntu-Version unterstützt. Wenn Sie ein neues System einrichten, anstatt ein Upgrade zu reparieren, führt unser Ubuntu 24.04 Installationsleitfaden durch das Hinzufügen von Vendor-Repositorys mit signed-by von Anfang an.
Bearbeiten Sie nicht nur den Codenamen und hoffen Sie auf das Beste – einige Repositorys veröffentlichen keine Pakete für jede Ubuntu-Version, also überprüfen Sie zuerst die Vendor-Unterstützung für Ihre Version.
GPG- und NO_PUBKEY-Fehler beheben
Was NO_PUBKEY bedeutet
APT-Repositorys veröffentlichen signierte Metadaten, und Ihr Computer benötigt den passenden öffentlichen Schlüssel, um diese Metadaten zu verifizieren. Wenn der Schlüssel fehlt, lehnt APT das Vertrauen in das Repository ab, was das Verhalten ist, das Sie wollen – deaktivieren Sie keine Signaturprüfungen, nur um den Fehler zum Verschwinden zu bringen.
Das moderne Keyring-Muster
Erstellen Sie das Keyring-Verzeichnis:
sudo install -d -m 0755 /etc/apt/keyrings
Laden Sie den Vendor-Schlüssel herunter und entfernen Sie die Armor:
curl -fsSL https://example.com/repository-key.gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg
Setzen Sie lesbare Berechtigungen:
sudo chmod 0644 /etc/apt/keyrings/example.gpg
Fügen Sie das Repository mit signed-by hinzu:
echo "deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/linux/ubuntu noble stable" \
| sudo tee /etc/apt/sources.list.d/example.list
Dann aktualisieren:
sudo apt update
Ersetzen Sie noble durch Ihren Ubuntu-Codenamen, falls erforderlich:
. /etc/os-release
echo "$VERSION_CODENAME"
Warum apt-key die falsche Gewohnheit ist
Alte Leitfäden verwenden oft:
curl -fsSL https://example.com/key.gpg | sudo apt-key add -
Vermeiden Sie apt-key add für neue Einrichtungen. Der alte apt-key-Stil fügt Schlüssel einem breiten Vertrauensbereich hinzu, was es schwieriger macht, zu begründen, welcher Schlüssel für welches Repository vertraut wird, während der moderne signed-by-Stil den Schlüssel auf ein bestimmtes Repository beschränkt und grundlegende Supply-Chain-Hygiene ist.
Legacy Trusted Keys finden
Sie können immer noch alte Schlüssel in:
/etc/apt/trusted.gpg
/etc/apt/trusted.gpg.d/
Dateien auflisten:
ls -l /etc/apt/trusted.gpg.d/
Löschen Sie keine Schlüssel zufällig – ordnen Sie zuerst jeden Schlüssel einem Repository zu und migrieren Sie dann ein Repository nach dem anderen zu /etc/apt/keyrings und signed-by.
Häufige GPG-Fehler
Verwenden Sie keine zufälligen Keyservers als erste Wahl bei der Behebung von NO_PUBKEY-Fehlern.
Bessere Reihenfolge:
- Verwenden Sie die offiziellen Installationsdokumente des Anbieters.
- Laden Sie den Schlüssel von der offiziellen HTTPS-URL des Anbieters herunter.
- Speichern Sie ihn in
/etc/apt/keyrings. - Binden Sie ihn mit
signed-byein. - Führen Sie
sudo apt updateaus.
Vermeiden Sie diese Abkürzungen:
sudo apt update --allow-unauthenticated
sudo apt install --allow-unauthenticated package-name
Sie können vorübergehend funktionieren, aber sie entfernen die Signaturverifizierung, die Sie vor manipulierten Repository-Metadaten schützt.
“Das Repository ist nicht signiert” beheben
Dieser Fehler bedeutet normalerweise eines der folgenden Dinge:
- Das Repository veröffentlicht keine signierten Metadaten.
- Die Repository-URL ist falsch.
- Das Repository unterstützt Ihre Ubuntu-Version nicht mehr.
- Ein Proxy oder Spiegel gibt den falschen Inhalt zurück.
- Sie verwenden HTTP, wo der Anbieter jetzt HTTPS erwartet.
- Die Quelldatei hat die falsche Suite oder Komponente.
Finden Sie die fehlerhafte Quelle:
sudo apt update
APT wird die URL drucken. Dann suchen Sie danach:
grep -R "example.com" /etc/apt/sources.list /etc/apt/sources.list.d/
Deaktivieren Sie sie vorübergehend:
sudo mv /etc/apt/sources.list.d/example.list /etc/apt/sources.list.d/example.list.disabled
sudo apt update
Wenn APT nach dem Deaktivieren der Datei wieder funktioniert, installieren Sie dieses Repository von den aktuellen offiziellen Anweisungen des Anbieters neu, anstatt die alte Konfiguration wieder zu aktivieren.
Duplizierte Repository-Warnungen beheben
APT kann warnen, dass ein Ziel mehrfach konfiguriert ist.
Liste der übereinstimmenden Einträge:
grep -R "repo-url-or-domain" /etc/apt/sources.list /etc/apt/sources.list.d/
Duplizierte Repositorys erscheinen oft nach mehrmaligem Ausführen von Vendor-Installations-Skripten.
Behalten Sie eine Quelldatei. Deaktivieren Sie die anderen:
sudo mv /etc/apt/sources.list.d/duplicate.list /etc/apt/sources.list.d/duplicate.list.disabled
sudo apt update
Duplizitätswarnungen sind nicht immer fatal, aber sie sind ein Zeichen für unordentliche Konfiguration, also behalten Sie eine Quelldatei und deaktivieren Sie die Duplikate.
Pakete von der falschen Ubuntu-Version beheben
Eines der schlimmsten APT-Probleme ist das Mischen von Ubuntu-Versionen – beispielsweise sollte eine Maschine mit Ubuntu 24.04 nicht leichthin Pakete von Ubuntu 22.04 oder Debian testing ziehen. Manchmal funktioniert es eine Weile, aber schließlich wird der Abhängigkeitsgraph zu einem Puzzle, das APT nicht sauber lösen kann.
Überprüfen Sie Ihre Version:
. /etc/os-release
echo "$VERSION_CODENAME"
Quellen durchsuchen:
grep -R "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/
Suchen Sie nach fremden Codenames in den aktivierten Quellen und untersuchen Sie dann das betroffene Paket:
apt-cache policy package-name
Wenn die installierte Version aus einem alten oder fremden Repository stammt, deaktivieren Sie dieses Repository und downgraden oder installieren Sie das betroffene Paket von Ubuntu-Repositorys neu.
Ein konservativer Reparaturpfad ist:
sudo apt update
sudo apt install --reinstall package-name
Bei tieferen Konflikten müssen Sie das Paket möglicherweise entfernen und von der richtigen Quelle neu installieren, anstatt ein Upgrade über eine fremde Version zu erzwingen.
APT-Cache und ungenutzte Pakete bereinigen
Die APT-Cache-Bereinigung ist keine Abhängigkeitsreparatur an sich, aber sie kann nach vielen fehlgeschlagenen Installationen helfen, indem sie Festplattenspeicher freisetzt und veraltete Paketdateien löscht.
Entfernen Sie Pakete, die automatisch installiert wurden und nicht länger benötigt werden:
sudo apt autoremove
Geladene Paketdateien bereinigen:
sudo apt clean
Oder entfernen Sie nur veraltete Paketdateien:
sudo apt autoclean
Verwenden Sie autoremove sorgfältig auf Servern und Desktops mit manuell installierten Treiber-Stacks und lesen Sie die Entfernungsliste vor der Akzeptanz.
Praktische APT-Fehlerbehebungs-Rezepte
Rezept: Paket wird zurückgehalten
sudo apt update
apt list --upgradable
apt-mark showhold
sudo apt full-upgrade
Wenn APT nach der Simulation vernünftige Änderungen vorschlägt, akzeptieren Sie sie. Wenn es große Entfernungen vorschlägt, stoppen und untersuchen:
apt-cache policy package-name
Rezept: Zurückgehaltenes Paket blockiert Upgrade
apt-mark showhold
apt-cache policy package-name
sudo apt-mark unhold package-name
sudo apt upgrade
Entfernen Sie nur einen Hold, wenn er nicht länger beabsichtigt ist, da das Entfernen eines Holds, der Produktionssoftware schützt, ein brechendes Upgrade auslösen kann.
Rezept: Unterbrochene Installation
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo apt upgrade
Rezept: NO_PUBKEY-Fehler
- Identifizieren Sie das Repository von
sudo apt update. - Finden Sie die aktuellen offiziellen Installationsanweisungen des Anbieters.
- Installieren Sie den Schlüssel in
/etc/apt/keyrings. - Verwenden Sie
signed-byin der Quelldatei. - Führen Sie
sudo apt updateaus.
Beispielstruktur:
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://example.com/key.gpg \
| sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg
sudo chmod 0644 /etc/apt/keyrings/example.gpg
echo "deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/ubuntu noble main" \
| sudo tee /etc/apt/sources.list.d/example.list
sudo apt update
Rezept: PPA hat keine Release-Datei
sudo apt update
ls /etc/apt/sources.list.d/
grep -R "ppa.launchpadcontent.net\|launchpad" /etc/apt/sources.list.d/
Deaktivieren Sie das PPA:
sudo mv /etc/apt/sources.list.d/example.list /etc/apt/sources.list.d/example.list.disabled
sudo apt update
Entscheiden Sie dann, ob Sie Pakete von diesem PPA entfernen, ersetzen oder bereinigen möchten.
Rezept: Manuelles .deb hat Abhängigkeiten gebrochen
dpkg -l | grep package-name
apt-cache policy package-name
sudo apt remove package-name
sudo apt --fix-broken install
Wenn Sie die Software immer noch benötigen, bevorzugen Sie das aktuelle APT-Repository des Anbieters gegenüber wiederholten manuellen .deb-Installationen, die mit der Zeit Abhängigkeitskonflikte ansammeln.
Wesentliche APT-Fehlerbehebungsbefehle
Repository und Metadaten
sudo apt update
grep -R "^deb" /etc/apt/sources.list /etc/apt/sources.list.d/
ls /etc/apt/sources.list.d/
Paketstatus
apt list --installed
apt list --upgradable
apt-mark showhold
dpkg -l | grep package-name
Paket-Policy und Abhängigkeiten
apt-cache policy package-name
apt-cache depends package-name
apt-cache rdepends package-name
Reparatur
sudo dpkg --configure -a
sudo apt --fix-broken install
sudo apt install --reinstall package-name
sudo apt full-upgrade
Bereinigung
sudo apt autoremove
sudo apt autoclean
sudo apt clean
Simulation
apt -s install package-name
apt -s full-upgrade
Was Sie nicht tun sollten
Löschen Sie nicht zufällig /var/lib/dpkg
Wenn Sie Ratschläge sehen, dpkg-Statusdateien zu löschen, seien Sie skeptisch. Die dpkg-Datenbank ist das Protokoll installierter Pakete, und das Löschen von Teilen davon kann ein reparierbares Paketproblem in ein volles System-Wiederherstellungsprojekt verwandeln.
Deaktivieren Sie nicht die Signaturverifizierung
Vermeiden Sie:
--allow-unauthenticated
Wenn ein Repository nicht verifiziert werden kann, beheben Sie den Schlüssel oder deaktivieren Sie das Repository, anstatt die Authentifizierung zu umgehen.
Mischen Sie nicht leichthin Ubuntu-Versionen
Fügen Sie keine Repositorys für eine andere Ubuntu-Version hinzu, es sei denn, Sie verstehen APT-Pinning und die Abhängigkeitsfolgen.
Dies gilt insbesondere für:
- Desktop-Umgebungen
- Grafiktreiber
- Python-Stacks
- Container-Runtimes
- Kubernetes-Pakete
- Datenbank-Pakete
Behandeln Sie PPAs nicht als harmlos
PPAs sind nützlich, aber sie sind immer noch Paket-Repositorys, die Bibliotheken und Systempakete ersetzen können – was genau das sein kann, was Sie wollen, oder genau der Grund, warum Ihr nächstes Upgrade bricht. Bevorzugen Sie PPAs für bestimmte Anwendungen, nicht für breite Systemgrundlagen, es sei denn, Sie vertrauen dem Betreuer und verstehen den Upgrade-Pfad.
APT-Fehlerbehebungs-Entscheidungsbaum
Verwenden Sie dieses mentale Modell:
Die meisten APT-Probleme werden handhabbar, sobald Sie aufhören, sie als einen großen Fehler zu behandeln und beginnen, Repository-Gesundheit, Paketstatus, Abhängigkeitslösung und Vertrauenskonfiguration zu trennen – der obige Entscheidungsbaum ist eine Abkürzung für diese Disziplin.
Empfohlene Basislinie für Entwicklermaschinen
Für eine saubere Ubuntu-Entwickler-Workstation bevorzugt ich diese Basislinie:
- Halten Sie Ubuntu-Repositorys standardmäßig.
- Verwenden Sie Vendor-APT-Repositorys nur, wenn sie offiziell und gewartet sind.
- Verwenden Sie
/etc/apt/keyringsundsigned-byfür Drittanbieter-Repositorys. - Vermeiden Sie alte
apt-key-Anweisungen. - Vermeiden Sie das Mischen von PPAs, die Kernsystembibliotheken ersetzen.
- Verwenden Sie Container,
uv,pipx,asdf,miseoder sprachen-native Tools für schnell wandernde Entwickler-Abhängigkeiten. - Halten Sie APT für das Betriebssystem, Treiber, Dienste und stabile CLI-Tools verantwortlich.
Für Desktop-Software bevorzugen Sie Flatpak oder Snap gegenüber PPAs, wenn ein sandboxed universelles Paket Ihren Bedürfnissen entspricht. APT ist ausgezeichnet, wenn es das Basissystem verwaltet, aber es wird schmerzhaft, wenn es gezwungen wird, wie ein universeller Entwickler-Abhängigkeitsmanager für schnell wandernde Sprach-Ökosysteme zu agieren.
Finale APT-Fehlerbehebungs-Checkliste
Wenn APT auf Ubuntu gebrochen ist, arbeiten Sie durch diese Checkliste:
[ ] Führen Sie sudo apt update aus und lesen Sie den ersten echten Fehler.
[ ] Überprüfen Sie den Ubuntu-Codenamen mit /etc/os-release.
[ ] Beenden Sie unterbrochene Installationen mit dpkg --configure -a.
[ ] Reparieren Sie Abhängigkeiten mit apt --fix-broken install.
[ ] Überprüfen Sie zurückgehaltene Pakete mit apt-mark showhold.
[ ] Untersuchen Sie Paketversionen mit apt-cache policy.
[ ] Deaktivieren Sie gebrochene PPAs oder Drittanbieter-Repositorys.
[ ] Ersetzen Sie apt-key-Style-Repositorys durch signed-by Keyrings.
[ ] Simulieren Sie riskante Operationen mit apt -s.
[ ] Lesen Sie Entfernungen vor der Akzeptanz von full-upgrade oder autoremove.
APT ist nicht zerbrechlich, aber es ist streng, und diese Strenge ist eine Funktion: Sie verhindert, dass unsigned Repositorys, unmögliche Abhängigkeitssets und zufällige Paketersatz stillschweigend Ihr System ändern. Die ruhige Art, APT zu beheben, ist, diese Strenge zu bewahren, den widersprüchlichen Zustand zu finden und das kleinste Ding zu reparieren, das tatsächlich falsch ist.