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 das Problem lösen, so dass ich die neueste Version anstelle der jetzigen verwenden kann?
Laut einem Artikel auf debian-administration.org,
Wenn sich die Abhängigkeiten zu einem der installierten Pakete geändert haben, so dass ein neues Paket installiert werden muss, um das Upgrade durchzuführen, wird dieses als "zurückbehalten" aufgeführt.
Vorsichtliche Lösung 1:
Gemäß Pablo's Antwort können Sie sudo apt-get --with-new-pkgs upgrade
ausführen, und es wird die zurückbehaltenen Pakete installieren.
Dies hat den Vorteil, dass die zurückbehaltenen Pakete nicht als "manuell installiert" markiert werden, was weitere Benutzereingriffe erzwingen könnte (siehe Kommentare).
Wenn Pablo's Lösung für Sie funktioniert, bewerten Sie sie bitte hoch. Wenn nicht, kommentieren Sie bitte, was falsch 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 wird dies den zurückbehaltenen Paketen das geben, was sie für ein erfolgreiches Upgrade benötigen.
Aggressive Lösung:
Eine aggressivere Lösung ist, sudo apt-get dist-upgrade
auszuführen, was die Installation der neuen Abhängigkeiten erzwingt.
Aber dist-upgrade
kann ziemlich gefährlich sein. Anders als upgrade kann es Pakete entfernen, um komplexe Abhängigkeitssituationen zu lösen. Im Gegensatz zu Ihnen ist APT nicht immer klug genug, um zu wissen, ob diese Hinzufügungen und Entfernungen Schaden anrichten könnten.
Wenn Sie sich also in einer Situation befinden, in der die "vorsichtige Lösung" nicht funktioniert, kann dist-upgrade
funktionieren... aber Sie sind wahrscheinlich besser dran, wenn Sie ein wenig mehr über APT lernen und die Abhängigkeitsprobleme "von Hand" lösen, indem Sie Pakete von Fall zu Fall installieren und entfernen.
Stellen Sie sich vor, Sie reparieren ein Auto... wenn Sie Zeit haben und gut mit einem Schraubenschlüssel umgehen können, können Sie sich beruhigt zurücklehnen, wenn Sie sich informieren und die Reparatur selbst durchführen. Wenn Sie Glück haben, können Sie Ihr Auto bei Ihrer Cousine zur Aufrüstung abgeben und hoffen, dass sie sich auskennt.
Normalerweise gibt es zwei Gründe, warum Sie diese Meldung sehen können.
Wenn ein Upgrade des Programms (mittels sudo apt-get upgrade
) dazu führen würde, dass Pakete hinzugefügt oder entfernt werden, dann wird das Programm zurückgehalten. Sie können in diesem Fall sudo apt-get dist-upgrade
verwenden, das dann anbietet, die zusätzlichen Programme hinzuzufügen oder zu entfernen.
Dies ist ziemlich üblich und stellt normalerweise kein Problem dar. Gelegentlich (besonders während einer Ubuntu-Alpha) wird ein dist-upgrade
anbieten, eine Menge anderer Programme zu entfernen, in diesem Fall sollten Sie es wahrscheinlich abbrechen.
Wenn das Programm von Paketen oder Versionen abhängt, die nicht verfügbar sind, dann wird das Programm zurückgehalten. In diesem Fall können Sie nichts anderes tun, als zu warten, da das Paket grundsätzlich deinstallierbar ist. Dies kann passieren, wenn Pakete in der falschen Reihenfolge zum Repository hinzugefügt werden, wenn ein Paket umbenannt wird oder wenn ein Paket kein virtuelles Paket mehr bereitstellt.
Höchstwahrscheinlich werden diese Pakete zurückgehalten, weil ihre Installation zu Inkonsistenzen bei den Abhängigkeiten führen würde. Dies kann entweder passieren, weil Sie Archive verwenden, die sich in aktiver Entwicklung befinden, oder weil der von Ihnen verwendete Spiegel nicht vollständig aktualisiert ist.
Im letzteren Fall warten Sie einfach ab. Wenn die Abhängigkeiten aufgelöst sind, werden die Pakete beim nächsten Mal installiert.
Bearbeiten:
Es gibt noch eine andere Möglichkeit: Pakete können zurückgehalten werden, wenn sie angehalten werden, oder wenn sie angeheftet sind.