Was bedeutet "Folgende Pakete wurden zurückgehalten"?

72

Wenn apt-get upgradeich eine Aktion mache, erhalte ich manchmal die Meldung "Die folgenden Pakete wurden zurückgehalten". Zum Beispiel:

$ sudo apt-get upgrade                                                                                                
Reading package lists... Done                                                                                                          
Building dependency tree                                                                                                               
Reading state information... Done                                                                                                      
The following packages have been kept back:                                                                                            
  linux-headers-server linux-image-server linux-server                                                                                 
0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.

Was bedeutet das genau? Offensichtlich wurden die Pakete zurückgehalten und nicht installiert, aber warum?

Die folgende Frage wäre: Wie aktualisiert man diese zurückgehaltenen Pakete?

Charles Roper
quelle
2
Eine sehr klare Erklärung finden Sie hier: debian-administration.org/article/69/…
jplandrain
Ich habe Kommentare und technische Dokumentation zusammengefasst zu: Die folgenden Pakete wurden zurückgehalten. Ich lade Sie ein, in meinem Artikel zu lesen und Kommentare zu hinterlassen, damit dies verbessert werden kann. Vielen Dank für Ihre Zeit, um diese Petition anzusprechen. Ich wünsche Ihnen auch, dass Sie den Beitrag nützlich finden. Dies ist der Link: guillermo.lopez.co.cr/… Bitte zitieren Sie diesen Artikel als Ressource, wenn jemand Hilfe zu diesem Thema benötigt.
Ithan

Antworten:

63

Wenn für das Upgrade ein anderes Paket gelöscht oder ein neues Paket installiert werden muss, wird das Paket "zurückgehalten". Wie die Manpage für apt-get upgrade erklärt:

Derzeit installierte Pakete, für die neue Versionen verfügbar sind, werden abgerufen und aktualisiert. Derzeit installierte Pakete werden unter keinen Umständen entfernt oder Pakete, die noch nicht installiert sind, werden abgerufen und installiert.

Um darüber hinwegzukommen, können Sie tun

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 dazu aufgefordert.

Tschad
quelle
6
Schön, das ist die klarste Erklärung. Die Manpage, auf die Sie auf die.net verlinkt haben, enthält jedoch nicht die Option --with-new-pkgs. Dieser tut es: manpages.debian.org/cgi-bin/man.cgi?query=apt-get
Charles Roper
1
Aber ich habe alle Pakete aktualisiert und aktualisiert. Warum werden diese Pakete nicht aktualisiert?
Nullpointer
2
@Nullpointer "apt-get upgrade" installiert keine neuen Pakete (es sei denn, Sie geben das Flag an). Ohne das Flag wird dieses Upgrade nicht durchgeführt, wenn für das Upgrade eines vorhandenen Pakets ein neues Paket installiert werden muss.
Tschad
18

Ein grundlegender Bericht ist, dass apt-get upgradekeine Pakete aktualisiert werden, für die der Paketmanager das Paket löschen und neu installieren möchte. Dies geschieht häufig in Sicherheitspatches, da es sich häufig um Bibliotheken handelte, die Vorläufer der endgültigen verteilbaren Kompilierung waren, die gepatcht wurden. Die Funktion "Go ahead and delete things" lebt, apt-get dist-upgradeaber stellen Sie sicher, dass Sie apt-get updatezuerst ausgeführt werden, nur für den Fall, dass die Upstream-Leute etwas herausgefunden haben, seit Sie es zuletzt versucht haben. Manchmal verpassen sie Dinge und reparieren sie schnell.

Rhoyerboat
quelle
3

Versuchen Sie es apt-get dist-upgrade. Von der Manpage:

dist-upgrade

dist-upgradeEr führt nicht nur die Funktionen von aus upgrade, sondern verarbeitet auch sich ändernde Abhängigkeiten mit neuen Versionen von Paketen auf intelligente Weise. apt-get Es verfügt über ein "intelligentes" Konfliktlösungssystem und versucht, die wichtigsten Pakete bei Bedarf auf Kosten weniger wichtiger Pakete zu aktualisieren. Daher kann der dist-upgradeBefehl einige Pakete entfernen. Die /etc/apt/sources.listDatei enthält eine Liste der Speicherorte, an denen die gewünschten Paketdateien abgerufen werden können. Siehe auch apt_preferences(5)für einen Mechanismus zum Überschreiben der allgemeinen Einstellungen für einzelne Pakete.

Mit diesem Befehl wird zwar ein Upgrade auf eine neue Hauptversion des Betriebssystems durchgeführt, dies geschieht jedoch nicht standardmäßig. Die Datei /etc/apt/sources.listmuss auf die neue Version geändert wird und dann ein dist-upgradeverwendet.

Darin Luckie
quelle
0

Mach einfach

sudo apt-get install linux-headers-server linux-image-server linux-server

die gehaltenen Pakete zu aktualisieren.

Dann renne apt-get upgradeund es wird dir gut gehen.

Robert
quelle
5
Das ist falsch. apt-get dist-upgradewird NICHT Ihr Betriebssystem auf eine neue Version aktualisieren. man apt-getdie Unterschiede zu sehen.
BT643
@ BT643 (und diejenigen, die den Kommentar hochgestuft haben) stimmen falsche Antworten ab, anstatt nur einen Kommentar zu hinterlassen. Besonders offensichtlich falsche Antworten wie diese, die ein weit verbreitetes Missverständnis aufrechterhalten. Wir sind auf Stimmen angewiesen, um guten Inhalt in den Vordergrund zu rücken, aber auch, um falschen Inhalt nach unten zu drücken.
Terdon
1
@terdon Ich habe es versucht, aber nicht genug Repräsentanten :) (brauche 125, um abzustimmen).
BT643
Ist der erste Teil (Installation / Upgrade nur der zurückgehaltenen Pakete) keine gute Antwort? Fahren Sie dann mit dem Upgrade fort. Das Entfernen der beleidigenden Ratschläge zu Dist-Upgrade klingt nach einer besseren Idee, als nur eine teilweise korrekte Antwort
abzustimmen
Zuerst in Betracht ziehen: sudo apt-get --with-new-pkgs upgradedie nicht Seite auswirken würde Pakete verursachen als manuell installiert werden markiert
l --marc l