Co oznacza „Następujące pakiety zostały wycofane”?

72

Kiedy to robię apt-get upgrade, czasami pojawia się komunikat „Następujące pakiety zostały cofnięte”. Na przykład:

$ 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.

Co to dokładnie oznacza? Oczywiście pakiety zostały wstrzymane i nie zostały zainstalowane, ale dlaczego?

Kolejne pytanie brzmi: w jaki sposób można uaktualnić te wycofane pakiety?

Charles Roper
źródło
2
Bardzo jasne wytłumaczenie można znaleźć tutaj: debian-administration.org/article/69/…
jplandrain
Podsumowałem komentarze i dokumentację techniczną na temat: Następujące pakiety zostały wycofane. Zapraszam do przeczytania mojego artykułu i pozostawienia komentarzy, aby można to poprawić. Dziękujemy za poświęcony czas na zajęcie się tą petycją. Również chciałbym, abyś był użyteczny. Oto jego link: guillermo.lopez.co.cr/… Proszę zacytować ten artykuł jako źródło informacji, gdy ktoś potrzebuje pomocy na ten temat.
ithan

Odpowiedzi:

63

Jeśli aktualizacja wymagałaby usunięcia innego pakietu lub zainstalowania nowego pakietu, pakiet zostanie „cofnięty”. Jak wyjaśnia strona podręcznika dla aktualizacji apt-get :

Pakiety aktualnie zainstalowane z dostępnymi nowymi wersjami są pobierane i aktualizowane; pod żadnym pozorem aktualnie nie są usuwane pakiety, ani pakiety, które nie zostały jeszcze zainstalowane, pobrane i zainstalowane.

Aby to obejść, możesz to zrobić

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

Umożliwia to instalowanie nowych pakietów. Poinformuje Cię, które pakiety zostaną zainstalowane i wyświetli monit przed faktyczną instalacją.

Czad
źródło
6
Fajnie, to najjaśniejsze jak dotąd wyjaśnienie. Strona podręcznika, do której prowadzisz link na die.net, nie zawiera jednak opcji --with-new-pkgs. Ten robi: manpages.debian.org/cgi-bin/man.cgi?query=apt-get
Charles Roper
1
Ale zaktualizowałem i zaktualizowałem wszystkie pakiety, więc dlaczego te pakiety się nie aktualizują?
Nullpointer,
2
@Nullpointer „apt-get upgrade” nie instaluje nowych pakietów (chyba że podasz flagę). Bez flagi, jeśli aktualizacja istniejącego pakietu wymagałaby instalacji nowego pakietu, taka aktualizacja nie nastąpi.
Czad
18

Podstawowym raportem jest to, że apt-get upgradenie uaktualni pakietów, dla których menedżer pakietów chciałby usunąć i ponownie zainstalować pakiet. Dzieje się tak często w przypadku łatek zabezpieczających, ponieważ często były to tak naprawdę biblioteki prekursorskie do końcowej kompilacji dystrybucyjnej, które zostały załatane. Funkcjonalność „kontynuuj i usuwaj rzeczy” jest dostępna, apt-get dist-upgradeale pamiętaj, aby uruchomić ją apt-get updatenajpierw, na wypadek, gdyby faceci z wcześniejszego etapu wymyślili coś od czasu ostatniej próby. Czasami tęsknią za rzeczami i szybko je naprawiają.

rhoyerboat
źródło
3

Spróbować apt-get dist-upgrade. Ze strony podręcznika:

dist-upgrade

dist-upgradeoprócz wykonywania funkcji upgradeinteligentnie obsługuje zmieniające się zależności dzięki nowym wersjom pakietów; apt-get ma „inteligentny” system rozwiązywania konfliktów i w razie potrzeby podejmie próbę uaktualnienia najważniejszych pakietów kosztem mniej ważnych. Tak więc dist-upgradepolecenie może usunąć niektóre pakiety. /etc/apt/sources.listPlik zawiera listę lokalizacji, z którego można pobierać żądane pakiety. Zobacz także apt_preferences(5)mechanizm zastępowania ogólnych ustawień dla poszczególnych pakietów.

Chociaż ta komenda jest używana do aktualizacji do nowej wersji głównej systemu operacyjnego, to jednak nie to zrobić domyślnie. Plik /etc/apt/sources.listmusi zostać zmieniona na nową wersję, a następniedist-upgrade służy.

Darin Luckie
źródło
0

Po prostu zrób

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

uaktualnić wstrzymane pakiety.

Następnie biegnij apt-get upgradei wszystko będzie dobrze.

Robert
źródło
5
To jest niepoprawne. apt-get dist-upgradebędą NIE uaktualnienie systemu operacyjnego do nowej wersji. man apt-getzobaczyć różnice.
BT643
@ BT643 (i ci, którzy głosowali za komentarzem) proszę zanegować błędne odpowiedzi zamiast pozostawiać komentarz. Szczególnie rażąco błędne odpowiedzi, takie jak ta, które utrwalają powszechne błędne przekonanie. Polegamy na głosach, które przynoszą dobre treści na pierwszy plan, ale także spychają złe treści na dół.
terdon
1
@terdon Próbowałem, ale nie mam wystarczającej liczby powtórzeń :) (potrzebuję 125, aby głosować).
BT643,
Czy pierwsza część (instalacja / aktualizacja tylko wstrzymanych pakietów) nie jest dobrą odpowiedzią? Następnie kontynuuj aktualizację. Usunięcie obraźliwej porady na temat aktualizacji dist wydaje się lepszym pomysłem niż tylko zanegowanie częściowo poprawnej odpowiedzi ...
Xen2050,
Najpierw rozważ użycie: sudo apt-get --with-new-pkgs upgradeco nie miałoby skutków ubocznych powodujących oznaczanie pakietów jako zainstalowane ręcznie
l --marc l