Frage "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, aber ich erhalte diesen 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, so dass ich die neuste Version statt der jetzigen verwenden kann?


719
2017-07-31 21:59


Ursprung


Streng genommen würde ich sagen, das ist eine Warnung, kein Fehler. - Kazark


Antworten:


Gemäß ein Artikel auf debian-administration.org,

Wenn sich die Abhängigkeiten für eines der von Ihnen installierten Pakete geändert haben, sodass ein neues Paket installiert werden muss, um das Upgrade durchzuführen, wird dies als "beibehalten" angezeigt.

Vorsichtige Lösung 1:

Die vorsichtige Lösung ist zu laufen sudo apt-get install <list of packages kept back>. In den meisten Fällen gibt dies den zurückgehaltenen Paketen das, was sie für ein erfolgreiches Upgrade benötigen.

Vorsichtige Lösung 2:

Pro Pablos Antwort, Du kannst rennen sudo apt-get --with-new-pkgs upgradeund installiert die zurückgehaltenen Pakete.

Dies hat den Vorteil, dass die zurückgehaltenen Pakete nicht als "manuell installiert" gekennzeichnet werden, wodurch mehr Benutzereingriffe auf der ganzen Linie erzwungen werden könnten (siehe Kommentare).

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

Aggressive Lösung:

Eine aggressivere Lösung ist es, zu laufen 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 Löschen Pakete zur Lösung komplexer Abhängigkeitssituationen. Im Gegensatz zu Ihnen ist APT nicht immer schlau genug, um zu wissen, ob diese Hinzufügungen und Entnahmen verheerende Folgen haben könnten.

Wenn Sie sich also an einem Ort befinden, an dem die "vorsichtige Lösung" nicht funktioniert, dist-upgrade  kann arbeiten ... aber Sie sind wahrscheinlich besser dran, ein bisschen mehr über APT zu lernen und die Abhängigkeitsprobleme "von Hand" zu lösen, indem Sie Pakete von Fall zu Fall installieren und entfernen.

Stellen Sie es sich vor, als würde man ein Auto reparieren ... Wenn Sie Zeit haben und mit einem Schraubenschlüssel handlich sind, werden Sie ein wenig Ruhe bekommen, indem Sie die Reparatur selbst lesen und durchführen. Wenn Sie Glück haben, können Sie Ihr Auto bei Ihrem Cousin abgeben dist-upgrade und hoffe, sie kennt ihre Sachen.


702
2017-07-31 22:15



Da dies eine akzeptierte Antwort braucht, muss es wirklich aktualisiert werden, um über die Verwendung zu warnen dist-upgrade auf einem stabilen System, wie viele der anderen Antworten darauf hingewiesen haben. Ich persönlich denke, es gibt eine einfachere / sicherere Antwort, die gefördert werden muss: apt-get install <Liste von Paketen> - Cas
Cas, sollte ich nur hinzufügen, dass es gefährlich sein könnte, ein dist-upgrade auf einem stabilen System auszuführen? Warum genau ist das gefährlich? (Ich weiß wirklich nicht so gut.) - mac9416
Da ist ein Serverfehlerantwort Das erklärt dist-upgrade ein wenig mehr im Detail. Ich denke, es ist nur lohnend zu erklären (nicht gefährlich als solche), dass es das gesamte System verbessern kann, was über das hinausgehen kann, was der Benutzer erwartet / wünscht, d.h. im OP-Beispiel fragen sie sich, warum Gimp zurückgehalten wird. - Cas
Bitte beachte, dass sudo apt-get dist-upgrade kann auch Löschen Pakete. Daher ist es am besten, die Liste der Änderungen zu überprüfen, bevor Sie den Regeln zustimmen sudo apt-get dist-upgrade. - Eliah Kagan
@EliahKagan Darf ich das sogar hinzufügen apt-get upgrade kann Pakete entfernen? Das wird immer dann passieren, wenn sonst ein Versionskonflikt auftreten würde. Denk an llvm3.6 gegen llvm3.6v5 (mit dem "v5" bedeutet, dass es mit kompiliert wurde gcc 5). Diese zwei kann nicht koexistieren, nur eines von beiden kann im System bleiben. Also ja dist-upgrade kann auch einige Pakete entfernen, aber es ist nicht nur dist-upgrade das würde das tun; unter bestimmten Umständen, upgrade würde auch. - syntaxerror


Immer wenn Sie von dem Befehl erhalten apt-get upgrade die Nachricht

The following packages have been kept back:

dann, um eines oder alle der zurückgehaltenen Pakete zu aktualisieren, ohne ein Distributions-Upgrade durchzuführen (das ist was dist-upgrade tut, wenn ich mich richtig erinnere) soll den Befehl ausgeben:

apt-get install <list of packages kept back>

Dadurch werden die zurückgehaltenen Probleme behoben und zusätzliche Pakete usw. installiert, wie in anderen Antworten erläutert.


468
2017-09-08 09:14



Wenn Pakete auf diese Weise zurückgehalten werden und ich manuell apt-get upgrade <list of packages>, wenn ich wiederholen apt-get upgradeEs werden die fraglichen Pakete aufgelistet, die nicht mehr benötigt werden und die ich verwenden kann apt autoremove um sie zu entfernen, was ich tue, und dann ein letztes apt-get upgrade und sie werden nicht länger als zurückgehalten aufgeführt ... Sehr komisch. Irgendwelche Gedanken? - cram2208
Tut apt-get install Entfernen Sie auch Pakete, wenn es notwendig ist, um knifflige Abhängigkeitssituationen zu lösen, oder müssten Sie eine separate ausführen apt-get remove Befehl, um diesen Teil des Upgrade-Prozesses zu erreichen? - mac9416
@ cram2208 Ich glaube das ist das erwartete Verhalten. Die Pakete, die "automatisch installiert und [...] nicht mehr benötigt werden" sind die früheren Versionen der aktualisierten Pakete, die jetzt nicht mehr benötigt werden. apt autoremove entfernt dann diese nicht verwendeten Abhängigkeiten. - Alex
Wenn für das Upgrade ein neues Paket installiert werden muss, wird das Paket "zurückgehalten". Überlegen Sie zuerst, ob Sie: sudo apt-get --with-new-pkgs upgrade was würde Sie haben nicht den Nebeneffekt, dass Pakete als manuell installiert markiert werden - l --marc l
@ Mac9416 ja, tut es. - jarno


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

  1. falsche Einstellung von source.list, und Sie enden mit gebrochenen Ubuntu.
  2. Möglicherweise wird die gesamte Anwendung auf die Version aktualisiert, die Sie nicht verwenden möchten.

Anwendungsfall: Kernel-Upgrade wird beibehalten, Sie möchten nur den Kernel aktualisieren, nicht die gesamte Distribution aktualisieren.

Besserer Umgang mit zurückgehaltenem Paket:

sudo aptitude

Wenn Sie das Paket zurückgehalten haben, sollten Sie oben auf der Liste die aktualisierbaren Pakete sehen.

  • Tippe auf diese Liste
  • Hit g zweimal
  • Beantworten Sie Debconf-Sachen, wenn Sie gefragt werden
  • Drücken Sie Return, um fortzufahren
  • Drücken Sie Q
  • Drücken Sie Ja

Dein zurückgehaltenes Paket wurde installiert.


170
2017-12-24 00:43



apt-get dist-upgrade ist nur gefährlich, wenn Sie schlechte Repositories haben /etc/apt/sources.list*. Es ist gut, sich dessen bewusst zu sein dist-upgrade Upgrades alle Pakete, aber mit den Standard-Repositories, sollte das in Ordnung sein. Nicht verwenden dist-upgrade könnte gefährlich sein, da Sie Sicherheitsupdates verpassen könnten. - Flimm
apt-get dist-upgrade kann Löschen sowie Pakete hinzufügen, aber es ist nicht wirklich gefährlich. Jeder Paketinstallationsbefehl kann schwerwiegende Schäden verursachen wenn du Probleme in deinem hast sources.list Datei! Ein Stammkunde apt-get upgrade Befehl installiert jedes Paket von einer beliebigen Softwarequelle, die aktiviert ist; dist-upgrade ist nicht einzigartig auf diese Weise. Darüber hinaus verwenden aptitude eine Operation überhaupt durchzuführen, zumindest bei amd64, ist viel gefährlicher als das Laufen apt-get dist-upgrade, in einer Veröffentlichung, wo Fehler 831768 ist nicht festgelegt. - Eliah Kagan
Für mich war es einfacher (lokale Maschine mit X läuft), nur synaptisch zu öffnen und das Upgrade des Pakets zu erzwingen. Aus irgendeinem Grund schien es überhaupt nicht zu erscheinen, wo Sie in Synaptic beschrieben haben. - djvs
Ebenfalls sudo aptitude safe-upgrade - msanford


Warum versuchst du es nicht? diese Unix SE Antwort:

sudo apt-get --with-new-pkgs upgrade

Dadurch können neue Pakete installiert werden. Es wird Sie wissen lassen, welche Pakete installiert werden und Sie vor der eigentlichen Installation auffordern.

apt Befehl (freundliche Alternative zu apt-get) Aktie Dies apt-get Möglichkeit.

Verwenden apt install <pkg> stattdessen wird pkg als "manuell installiert" markiert !! Um es wieder als "automatisch installiert" zu markieren, verwenden Sie apt-mark auto <pkg> (Siehe auch Unterbefehl showmanual). Mehr Info auf diese Antwort.


60
2017-12-20 20:16



+1, da es keine Auswirkungen hat, dass Pakete als manuell installiert markiert werden. - ctrl-alt-delor
Beachten Sie, wer jemals meinen obigen Kommentar gelesen hat: Es ist eine gute Sache, den Nebeneffekt der Markierung nicht manuell installiert zu haben. Ich mag diese Antwort. - ctrl-alt-delor
Also wenn du benutzt sudo apt-get --with-new-pkgs upgrade  ohne Laufen apt-mark auto <pkg>, wird alles gut? Ist der zweite Befehl nur notwendig, wenn Sie? machen Wählen Sie, um zurückgehaltene Pakete manuell zu installieren? - mac9416
Ja. apt-mark auto <pkg> sollte nur notwendig sein, um ein Paket als automatisch installiert zu kennzeichnen (Hier die Manpage). - Pablo Bianchi


Es gibt normalerweise zwei Gründe, warum Sie diese Nachricht sehen können.

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

Dies ist ziemlich häufig und in der Regel kein Problem. Gelegentlich (besonders während eines Ubuntu Alphas) ​​a dist-upgrade bietet an, eine Menge anderer Programme zu entfernen, in welchem ​​Fall Sie es wahrscheinlich abbrechen möchten.

Wenn das Programm von Paketen oder Versionen abhängt, die nicht verfügbar sind, wird das Programm zurückgehalten. Sie können wirklich nichts tun, als in diesem Fall zu warten, da das Paket grundsätzlich nicht installierbar ist. Dies kann passieren, wenn Pakete dem Repository außer Betrieb hinzugefügt werden, wenn ein Paket umbenannt wird oder wenn ein Paket kein virtuelles Paket mehr bereitstellt.


30
2017-07-31 22:16



Gibt es eine Möglichkeit zu bestimmen, ob das gehaltene Paket eine Abhängigkeit benötigt, die nicht installiert werden kann oder wenn es gehalten wird, da andere Pakete davon abhängig sind. Ich habe viele Pakete und ich glaube, dass beide Fälle auf meinem System zutreffen. - Jake
Danke, der zweite Grund war das Thema für mich. Sogar apt-get dist-upgrade weigerte sich, es zu installieren. Die Überprüfung des Pakets mit aptitude hat gezeigt, dass es auf ein Paket ankommt, das nicht verfügbar ist. Ich denke, ich muss warten. - jlh


Höchstwahrscheinlich werden diese Pakete zurückgehalten, weil ihre Installation Abhängigkeitsinkonsistenzen verursachen würde. Dies kann passieren, weil Sie Archive in aktiver Entwicklung verwenden, ppas, oder weil die von Ihnen verwendete Mirror nicht vollständig aktualisiert wird.

Im letzten Fall warten Sie einfach, wenn die Abhängigkeiten aufgelöst sind, wird es beim nächsten Mal installiert.

Bearbeiten:

Es gibt noch eine andere Möglichkeit: Pakete können zurückgehalten werden, wenn sie gehalten werden, oder wenn sie fixiert sind.


18
2017-07-31 22:17



Worauf basieren Sie diese Wahrscheinlichkeit, ohne zu wissen, was für ein apt-get Upgrade oder ein apt-get dist-upgrade (alt. Die Eignungsäquivalente) ist? - andol
Dies ist das am häufigsten auftretende Problem in Supportfragen und Fehlern - txwikinger
Einverstanden. Sie sollten wahrscheinlich warten und überprüfen Sie apt_preferences. Dies wird oft durch Entwicklungsarchive verursacht, bei denen sich die Abhängigkeiten der verfügbaren Pakete und Pakete sehr schnell ändern. Warte, bis sie sich beruhigt haben und du musst es vielleicht nicht dist-upgrade überhaupt. Wenn du es trotzdem möchtest dist-upgradeSehen Sie sich dann die zu installierenden NEW-Pakete und die zu entfernenden Pakete an, bevor Sie fortfahren. - Umang
Dies ist mein Fall, weil ich die "zurückgehalten" -Meldung mit dist-upgrade bekomme - Postadelmaga
In den Fällen, in denen dieses Problem auf ein Durcheinander mit apt-Voreinstellungen (Pinning) zurückzuführen ist, half mir die Neuinstallation der aufbewahrten Pakete: apt-get install --reinstall <packages>. - tanius


Sie können auch versuchen:

sudo aptitude safe-upgrade.

Es ist sicherer als full-upgrade (ursprünglich als dist-upgrade bezeichnet), da "Pakete nicht entfernt werden, wenn sie nicht unbenutzt sind".

Von man aptitude:

Safe-Upgrade

Aktualisiert installierte Pakete auf ihre neueste Version. Eingerichtet   Pakete werden nur entfernt, wenn sie unbenutzt sind /.../ Pakete   welche zur Zeit nicht installiert sind, können installiert werden, um zu beheben   Abhängigkeiten, es sei denn die Befehlszeilenoption --no-new-installs ist   geliefert.


18
2017-08-12 08:02





Dies liegt in der Regel daran, dass das Paket eine Abhängigkeit hinzugefügt hat und das Upgrade es nicht ohne Erlaubnis 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.


9
2017-12-27 19:20



Aktualisiert bestimmte Pakete (und ihre Abhängigkeiten) ohne die Verpflichtung (Risiken) eines dist-upgrades. - John Mee


Ich habe festgestellt, dass Eignung verbessert Pakete verbessert, wenn die Versionen nur geringfügig abweichen. Ich hatte eine Situation wie diese:

me@compy:/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 machte apt-get das Update zurück, aber aptitude aktualisierte es einfach gut. Ich bin nicht sicher, welcher Algorithmus verwendet wird, um festzustellen, ob ein Paket aktualisiert werden soll oder nicht. Ich denke, diese beiden hatten die gleiche Version, nur eine andere "Qualifier". Aber auf jeden Fall würde apt-get das nicht auf den neuesten Stand bringen, aber die Eignung würde sich ändern.


7
2018-05-02 20:48





Das hat für mich funktioniert

sudo aptitude full-upgrade

7
2018-03-22 11:40



Sogar aptitude upgrade hat für mich gearbeitet. - Bibhas
Ich benutze Ubuntu 14.04 und ich habe es nicht aptitude Befehlszeile - ahmed hamdy
apt-get dist-upgrade gab mir die gleiche Nachricht, aber das hat es für mich gelöst. Ich hatte ein Paket, das das Upgrade eines anderen Pakets durchbrach. Ich brauchte den, den ich installiert hatte, nicht aptitude full-upgradegab mir die Option, es zu entfernen, so dass es alles andere aufwerten könnte. - f.ardelian


Ich stieß auf dieses Problem, als ein neuer Kernel veröffentlicht wurde. (Möglicherweise, weil ich instabile Updates aktiviert habe.) Ich fand den einfachsten Weg, um die Installation durch Ubuntus grafischen Installer (update-manager).


3
2017-11-16 20:07