it-swarm-eu.dev

"Die folgenden Pakete wurden zurückgehalten:" Warum und wie löse ich es?

Ich habe gerade ein PPA-Repository für die Entwicklungsversion von GIMP hinzugefügt, erhalte jedoch den folgenden Fehler:

$ apt-get update && apt-get upgrade
...
The following packages have been kept back:
  gimp gimp-data libgegl-0.0-0 libgimp2.0

Warum und wie kann ich es lösen, damit ich die neueste Version anstelle der jetzt verfügbaren verwenden kann?

864
jfoucher

Laut ein Artikel auf debian-administration.org ,

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.

Vorsichtige Lösung 1:

Per Pablos Antwort können Sie Sudo apt-get --with-new-pkgs upgrade ausführen, und die zurückgehaltenen Pakete werden installiert.

Dies hat den Vorteil, dass die zurückgehaltenen Pakete nicht als "manuell installiert" gekennzeichnet werden, was weitere Benutzereingriffe erzwingen kann (siehe Kommentare).

Wenn die Lösung von Pablo für Sie funktioniert, stimmen Sie dieser bitte zu. Wenn nicht, kommentieren Sie bitte, was schief gelaufen ist.

Vorsichtige Lösung 2:

Die vorsichtige Lösung ist, Sudo apt-get install <list of packages kept back> auszuführen. In den meisten Fällen erhalten die zurückgehaltenen Pakete so das, was sie für ein erfolgreiches Upgrade benötigen.

Aggressive Lösung:

Eine aggressivere Lösung ist die Ausführung von Sudo apt-get dist-upgrade, wodurch die Installation dieser neuen Abhängigkeiten erzwungen wird.

Aber dist-upgrade kann ziemlich gefährlich sein . Im Gegensatz zum Upgrade Es kann Pakete entfernen , um komplexe Abhängigkeitssituationen zu lösen. Im Gegensatz zu Ihnen ist APT nicht immer schlau genug, um zu wissen, ob diese Hinzufügungen und Entfernungen Chaos anrichten können.

Wenn Sie sich also an einem Ort befinden, an dem die "vorsichtige Lösung" nicht funktioniert, kann dist-upgrade funktionieren, aber Sie sollten wahrscheinlich besser a lernen Weitere Informationen zu APT und zur Behebung der Abhängigkeitsprobleme "von Hand" durch Installieren und Entfernen von Paketen von Fall zu Fall.

Stellen Sie sich das wie das Reparieren eines Autos vor. Wenn Sie Zeit haben und mit einem Schraubenschlüssel zurechtkommen, können Sie sich beruhigen, wenn Sie die Reparatur selbst durchführen. Wenn Sie Glück haben, können Sie Ihr Auto mit Ihrer Cousine dist-upgrade abgeben und hoffen, dass sie sich auskennt.

887

Wann immer Sie vom Befehl apt-get upgrade die Nachricht erhalten

The following packages have been kept back:

wenn Sie dann eines oder alle zurückgehaltenen Pakete aktualisieren möchten, ohne ein Distributions-Upgrade durchzuführen (dies ist, wenn ich mich recht erinnere, die Aufgabe von dist-upgrade), geben Sie den folgenden Befehl ein:

apt-get install <list of packages kept back>

dadurch werden die zurückgehaltenen Probleme behoben, und Sie werden aufgefordert, zusätzliche Pakete usw. zu installieren, wie in anderen Antworten erläutert.

497
user88285

apt-get dist-upgrade ist gefährlich für eine stabile Umgebung,

  1. falsche source.list einstellung und du landest mit kaputtem ubuntu.
  2. möglicherweise wird die gesamte Anwendung auf die Version aktualisiert, die Sie nicht möchten.

Anwendungsfall: Kernel-Upgrade zurückgehalten, Sie möchten nur den Kernel aktualisieren, nicht die gesamte Distribution aktualisieren.

Besserer Umgang mit zurückgehaltenen Paketen:

Sudo aptitude

Wenn Sie das Paket zurückbehalten haben, sollten Sie oben auf der Liste Upgradable Packages sehen.

  • Hit + auf dieser Liste
  • Drücken Sie zweimal g
  • Beantworten Sie debconf stuff, wenn Sie gefragt werden
  • Drücken Sie die Eingabetaste, um fortzufahren
  • Drücken Sie Q
  • Drücken Sie auf Ja

Ihr zurückgehaltenes Paket ist installiert.

173
mudy

Warum versuchst du nicht diese Unix SE Antwort :

Sudo apt-get --with-new-pkgs upgrade

Dadurch können neue Pakete installiert werden. Sie erfahren, welche Pakete installiert werden sollen, und werden vor der eigentlichen Installation zur Eingabe aufgefordert.

apt command ( freundliche Alternative to apt-get ) teile diese Option.

Wenn Sie stattdessen apt install <pkg> verwenden, wird pkg als "manuell installiert" markiert !! Um es erneut als "automatisch installiert" zu markieren, verwenden Sie apt-mark auto <pkg> ( Siehe auch Unterbefehl showmanual). Mehr Infos zu dieser Antwort .

141
Pablo Bianchi

Es gibt normalerweise zwei Gründe, warum diese Meldung angezeigt wird.

Wenn das Aktualisieren des Programms (über Sudo apt-get upgrade) dazu führen würde, dass Pakete hinzugefügt oder entfernt werden, wird das Programm zurückgehalten. In diesem Fall können Sie Sudo apt-get dist-upgrade verwenden, um die zusätzlichen Programme hinzuzufügen oder zu entfernen.

Dies ist ziemlich häufig und normalerweise kein Problem. Gelegentlich (besonders während eines Ubuntu-Alphas) ​​bietet ein dist-upgrade an, viele andere Programme zu entfernen. In diesem Fall möchten Sie es wahrscheinlich abbrechen.

Wenn das Programm von Paketen oder Versionen abhängt, die nicht verfügbar sind, wird das Programm zurückgehalten. Sie können unter diesen Umständen wirklich nichts anderes tun, als zu warten, da das Paket im Grunde genommen deinstallierbar ist. Dies kann passieren, wenn Pakete nicht mehr in der richtigen Reihenfolge zum Repository hinzugefügt werden, wenn ein Paket umbenannt wird oder wenn ein Paket kein virtuelles Paket mehr bereitstellt.

33
jbowtie

Sie können auch versuchen:

Sudo aptitude safe-upgrade.

Es ist sicherer als full-upgrade (ursprünglich dist-upgrade genannt), da "Pakete nur entfernt werden, wenn sie nicht verwendet werden".

Aus man aptitude:

sicheres Upgrade

Aktualisiert installierte Pakete auf die neueste Version. Installierte Pakete werden nur entfernt, wenn sie nicht verwendet werden. /.../ Derzeit nicht installierte Pakete können installiert werden, um Abhängigkeiten aufzulösen, sofern nicht die Befehlszeilenoption --no-new-installs angegeben ist.

23
Afilu

Höchstwahrscheinlich werden diese Pakete zurückgehalten, da ihre Installation zu Abhängigkeitsinkonsistenzen führen würde. Dies kann entweder passieren, weil Sie Archive in der aktiven Entwicklung (ppas) verwenden oder weil der von Ihnen verwendete Spiegel nicht vollständig aktualisiert wurde.

Warten Sie im letzten Fall einfach, bis die Abhängigkeiten aufgelöst sind und beim nächsten Mal installiert werden.

Edit:

Es gibt eine andere Möglichkeit, dass Pakete zurückgehalten werden, wenn sie zurückgehalten werden oder wenn sie angeheftet sind.

21
txwikinger

Dies liegt normalerweise daran, dass das Paket eine Abhängigkeit hinzugefügt hat und das Upgrade diese nicht ohne Erlaubnis für Sie hinzufügen möchte.

Wenn du läufst:

Sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0

Dann sollten die neuen Versionen zusammen mit ihrer neuen Abhängigkeit installiert werden.

Das hat bei mir funktioniert

Sudo aptitude full-upgrade
8
Singh

Ich habe festgestellt, dass aptitude das Upgraden von Paketen besser macht, wenn sich die Versionen nur geringfügig unterscheiden. Ich hatte eine Situation wie diese:

[email protected]:/etc/apt$ apt-cache policy gzip
gzip:
  Installed: 1.3.5-15
  Candidate: 1.3.5-15+etch1
  Version table:
     1.3.5-15+etch1 0
        500 http://archive.debian.org etch/main Packages
 *** 1.3.5-15 0
        100 /var/lib/dpkg/status

Dies hat apt-get dazu gebracht, das Update zurückzuhalten, aber aptitude hat es in Ordnung gebracht. Ich bin nicht sicher, welcher Algorithmus verwendet wird, um zu bestimmen, ob ein Paket aktualisiert werden soll oder nicht. Ich denke, diese beiden hatten die gleiche Version, nur einen anderen "Qualifier". Aber in jedem Fall würde apt-get es nicht aktualisieren, aber aptitude würde es aktualisieren.

6

In meinem Fall waren zurückgehaltene Pakete diejenigen, die sich auf Linux-Header und Kernel bezogen. Ich habe versucht, ein Problem zu lösen, bei dem im Infobereich ein rotes Ausrufezeichen angezeigt wird und Pakete nicht aktualisiert werden können.

Um das Problem zu lösen, musste ich weder dist-upgrade noch manuell apt-get install xxx verwenden.

Was ich getan und geholfen habe, war einfach und sauber:

Sudo apt-get update
Sudo apt-get autoremove
Sudo apt-get autoclean
Sudo apt-get upgrade

Ich musste das Grub-Update und seine Konfiguration manuell bestätigen.

Dann habe ich nur eine Weile mit dem Computer gearbeitet und dann ist wieder der Standard-Update-Dialog erschienen, der endlich den Abschnitt "Ubuntu Base" mit dem Kernel und verwandten enthält. Das Update wurde ohne Probleme durchgeführt und ich sehe keine zurückgehaltenen Pakete mehr.

Es ist auch sehr wichtig zu bedenken, dass diese * buntu-Updates einschließlich Kernel-Updates reagieren empfindlich auf Ruhezustand - Ich habe dieses Problem mehrmals und bekomme es immer durch Neustarten des Computers und Ausführen behoben die Schritte oben.

Also vielleicht wäre das gerade genug ?!

(Die hier beschriebene Situation bezieht sich auf mein Xubuntu 15.10 Ende Dezember 2015)

4
crysman

Ich bin auf dieses Problem gestoßen, als ein neuer Kernel veröffentlicht wurde. (Möglicherweise, weil ich instabile Updates aktiviert habe.) Ich fand, dass die Installation am einfachsten über das grafische Installationsprogramm von Ubuntu (update-manager) erfolgt.

3
Kazark

Ich bin auf dieses Problem mit synaptic gestoßen, weil es anscheinend hängen geblieben ist. Um dies zu beheben, habe ich es neu gestartet und erneut versucht.

Dann entdeckte ich eine informative Nachricht als Teil des Pakets mit einigen Nachinstallationsanweisungen für mich.

Ich musste "details" und dann "q" drücken, um die Nachricht zu beenden, und dann ging es normal weiter.

2
Elliptical view

Dies sieht nach dem richtigen Weg aus, das zurückgehaltene Paket erneut zu installieren:

apt-get install --reinstall libjpeg-progs

Zumindest funktionierte das bei mir, als libjpeg-progs nach dem Upgrade von Ubuntu 14.04 auf 16.04 nicht mehr funktionierte. Ich bin sicher, dass Sie dasselbe mit jeder anderen zurückgehaltenen App tun können, z. gimp.

Quelle: https://ubuntuforums.org/showthread.php?t=2321702&p=13476183#post1347618

2

Ich habe alle Beiträge gelesen und festgestellt, dass es viele interessante Erklärungen gibt. Ich habe alle ausprobiert, aber keine vollständigen Ergebnisse erzielt. Ich habe ein Problem mit mysql-utilities , das ich nicht aktualisieren konnte. Die Aktualisierung wurde vom System vorgeschlagen. Also möchte ich einige Schritte zeigen, um es zu tun. Natürlich werde ich in einigen Augenblicken alle oben genannten Beiträge wiederholen. Hier ist mein Fehler, ja ich habe ihn durch bereits vorhandene Beiträge gefunden, aber was soll ich als nächstes tun? enter image description here

Der nächste Schritt ist:

Sudo apt-get --purge remove mysql-utilities

Die Ergebnisse sehen Sie im Bild unten. Ich entferne das Paket und überprüfe dies per Befehl:

Sudo apt-get -f install

Ergebnisse - Gut! Später habe ich diese neue Version des Pakets korrekt installiert. enter image description here

Auf diese Weise können wir meiner Meinung nach mehr neuen Leuten helfen, da wir mit anderen Paketen die gleichen Schritte ausführen können.

Einmal tut es mir leid, als ich an einigen Stellen andere Beiträge wiederholte.

1

Unbuntu 18.04 bietet eine neuere, optimierte Syntax über apt, die anstelle von _apt-get_ verwendet werden kann.

_Sudo apt full-upgrade
_

Sudo apt upgrade wird verwendet, um verfügbare Upgrades aller derzeit auf dem System installierten Pakete von den über sources.list (5) konfigurierten Quellen zu installieren. Bei Bedarf werden neue Pakete installiert, um Abhängigkeiten zu erfüllen. Vorhandene Pakete werden jedoch niemals entfernt. Wenn ein Upgrade für ein Paket das Entfernen eines installierten Pakets erfordert, wird das Upgrade für dieses Paket nicht durchgeführt.

Sudo apt full-upgrade führt die Funktion des Upgrades aus, entfernt jedoch aktuell installierte Pakete, wenn dies für das Upgrade des gesamten Systems erforderlich ist.

1
l --marc l

Tatsächlich ist der Schalter, den Sie benötigen, dselect-upgrade, der Abhängigkeiten für die jeweilige betroffene Paketgruppe installiert/entfernt.

1
Johnny