apt sagt, dass Pakete zurückgehalten wurden, was tun?


22

Die Ausgabe von apt-get upgradeist:

The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl

Was bedeutet das? Sollte ich etwas unternehmen? Wenn ja, was?

Antworten:


35

Schnelle und EINFACHE Lösung:

Ich hatte mehrmals das gleiche Problem. NICHTsudo apt-get dist-upgrade zuerst tun . Sehr wichtig. **** HINWEIS: Diese Lösung ist für Debian-basierte Maschinen gedacht, funktioniert aber nicht mit KDE Neon . Um KDE Neon zu aktualisieren, müssen Sie sudo pkcon update**** verwenden .

Warum?

Es kann Ihr System sehr instabil machen, Programme können abstürzen und Sie können viele Funktionen in Ihrem Betriebssystem verlieren.

Sie muss jedes Paket einzeln installieren, JEDOCH , während dieses Prozesses werden andere Abhängigkeiten auch automatisch und Ihr Problem installiert wird , in nur wenigen Minuten gelöst werden.

Ich hatte keine Probleme mit der folgenden Lösung. Es ist ziemlich schnell und einfach.


Tun Sie dies zuerst:

apt list --upgradable

  • Daraufhin wird eine Liste der Pakete angezeigt, die aktualisiert werden können.

Führen Sie als Nächstes Folgendes aus:

  • Beginnen Sie am Anfang der Liste mit dem ersten Paket und geben Sie Folgendes ein:

sudo apt-get install package-name-here

  • Dadurch wird der Installationsprozess durchlaufen und es werden Abhängigkeiten abgerufen / installiert.

Führen Sie nach Abschluss dieses Vorgangs Folgendes aus:

apt list --upgradable

  • Dies zeigt wieder, welche Pakete aktualisiert werden können. Ihre Liste der Pakete sollte jetzt abnehmen. Befolgen Sie die Liste der Pakete und geben Sie apt list --upgradablenach jeder Paketinstallation Folgendes ein . Dies sollte nur einige Minuten dauern.

Schließlich:

sudo apt-get autoclean

sudo apt-get update && sudo apt-get dist-upgrade

Wenn diese Lösung für Sie funktioniert hat, vergessen Sie bitte nicht, sie zu aktualisieren, damit die richtige Lösung für andere zur Verfügung steht und ganz oben auf der Liste der Antworten steht.

Wenn diese Lösung aus irgendeinem Grund nicht für Sie funktioniert, lesen Sie bitte die Antwort von Benutzer GAD3R weiter unten. Es ist auch eine gute Lösung.

Vielen Dank.


1
Für mich war das Paket Ubuntu-Minimal. Ihre Anweisungen haben einwandfrei funktioniert.
DeanM

Verwenden Sie diese Lösung nicht, wenn Sie mit KDE Neon arbeiten.
Gregory Smitherman

11

Was bedeutet das?

The following packages have been kept back:

Die Antwort ist da

Dies bedeutet, dass es neue Versionen dieser Pakete gibt, die aus irgendeinem Grund nicht installiert werden. Mögliche Gründe sind fehlerhafte Abhängigkeiten (für ein Paket, von dem es abhängt, steht keine Version zum Herunterladen zur Verfügung) oder neue Abhängigkeiten (das Paket ist seit der letzten Version von neuen Paketen abhängig).

Sollte ich etwas unternehmen?

Sie müssen Folgendes dist-upgradeverwenden, um die neuen Abhängigkeiten zu installieren und die Pakete zu aktualisieren:

sudo apt-get dist-upgrade

Das Problem kann durch Ausführen behoben werden, dist-upgradewenn Folgendes nicht erforderlich ist:

Korrigieren Sie fehlerhafte Abhängigkeiten

sudo apt-get -f install 

Entfernen Sie einige Pakete, die nicht mehr auf Ihrem System installiert sind:

sudo apt-get autoclean

Legen Sie das gewünschte Paket in die Warteschleife:

echo "<package_name> hold" | dpkg --set-selections

Konfigurieren Sie das benannte Paket neu:

dpkg-reconfigure <package_name>

3

Aus dieser Unix SE-Antwort :

Zunächst, wie oben erwähnt, bitte KEIN Produktivsystem dist-upgraden! Während dist-upgrade zurückgehaltene Pakete "löst", ist es definitiv nicht die Lösung für dieses Problem und wird Ihnen höchstwahrscheinlich mehr Kummer bereiten als nützen, wenn Sie es ausführen, ohne die Auswirkungen auf Ihr System zu kennen.

Wenn für das Upgrade eines Pakets die Installation zusätzlicher Pakete erforderlich ist, wird es während der Ausführung "zurückgehalten" sudo apt-get upgrade.

Wie oben erwähnt, können Sie diese "zurückgehaltenen" Pakete manuell installieren, indem Sie sie explizit ausführen. Dadurch sudo apt-get install [paste kept back packages here]werden diese Pakete jedoch als "manuell installiert" gekennzeichnet, was häufig nicht unseren Wünschen entspricht.

Um zusätzliche Pakete automatisch zu installieren, die für ein Upgrade der "zurückgehaltenen" Pakete erforderlich sind, ohne die "zurückgehaltenen" Pakete als manuell installiert zu markieren, führen Sie einfach Folgendes aus sudo apt-get --with-new-pkgs upgrade.


Mehr über --with-new-pkgsund die Nebenwirkungen anderer Alternativen erfahren Sie hier .
Pablo A

2

Ich habe diese Antwort in meinen Blog aufgenommen. Wenn Sie sehen möchten, dass Sie dorthin gehen können, klicken Sie auf diesen Link .

Der obige Fehler tritt sehr häufig im Ubuntu-Terminal auf, wenn Sie versuchen, ein Upgrade durchzuführen ( apt-get upgrade). Dies geschieht normalerweise, weil sich die Abhängigkeiten eines Pakets, das Sie installieren, geändert haben. Um ein Upgrade durchzuführen, müssen Sie auch diese zuerst aktualisieren. Es ist also sehr einfach, das zu lösen. Sie können die Pakete sehen, die unter dieser Fehlermeldung zurückgehalten wurden. Als Beispiel kann ich folgende Pakete in der Liste sehen:

gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Geben Sie nicht nur Folgendes ein sudo apt-get dist-upgradeEs ist sehr gefährlich, da alle ausstehenden Updates installiert werden. Dies könnte Ihre Arbeitsumgebung in einen sehr instabilen Zustand versetzen.

Daher ist meine Meinung berühmt zu gebrauchen

sudo apt-get install [package]

Sie können durch das [package]in der Fehlermeldung angegebene Paket ersetzen . Sie können sie auch als Liste ablegen (einfach kopieren und einfügen). Als Beispiel in meinem Fall kann ich eingeben

sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Wenn du willst

sudo apt-get dist-upgrade

Überprüfen Sie aus irgendeinem Grund die Liste der Pakete mit der Option simulate -s( sudo apt-get -s dist-upgrade) oder ohne die -sOption, die Sie vor dem Akzeptieren beenden können. (Sie können immer die Option nein wählen)


2

Kürzlich führte ein Debian-Sicherheitsupdate einige neue Abhängigkeiten ein. In diesem Fall begann das linux-imagePaket linux-firmwareunter anderem zu erfordern . Also wurden sie zurückgehalten und nicht von installiert unattended-upgrade. Nach einigen Tests und Bestätigungen konnte ich nur diese Pakete selektiv installieren , ohne andere ausstehende Updates zu berühren:

apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')


1

Dieser Artikel fasst gut zusammen, warum dies passiert:

Wenn sich die Abhängigkeiten von einem der von Ihnen installierten Pakete geändert haben, sodass ein neues Paket installiert werden muss, um das Upgrade durchzuführen, wird dieses als "zurückgehalten" aufgeführt.

Die Lösung hierfür ist, sie explizit mit zu installieren

sudo apt install [packages]

Sie möchten diese Pakete wahrscheinlich als automatisch installiert markieren, es sei denn, Sie kümmern sich selbst darum und möchten nicht nur Abhängigkeiten erfüllen.

sudo apt-mark auto [packages]

Um dies zu verhindern, empfehle ich die Verwendung

sudo apt --with-new-pkgs upgrade

Pakete in der Zukunft zu aktualisieren, wodurch die Installation neuer Pakete ermöglicht wird, um Änderungen in Abhängigkeiten gerecht zu werden.


Zwei Daumen hoch für --with-new-pkgs! Und lassen Sie mich noch einmal betonen, dass " KEIN Produktivsystem dist-upgraden" ! Während dist-upgrade zurückgehaltene Pakete "löst", ist es definitiv keine Lösung für dieses Problem und wird Ihnen höchstwahrscheinlich mehr Kummer als Gutes bereiten, wenn Sie Führen Sie es aus, ohne die Auswirkungen auf Ihr System zu kennen. "
29.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.