Что означает «Следующие пакеты были сохранены»?


72

При выполнении этого apt-get upgradeя иногда получаю сообщение «Следующие пакеты были сохранены». Например:

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

Что это значит точно? Очевидно, что пакеты были отложены и не установлены, но почему?

Следующий вопрос будет таким: как обновить эти скрытые пакеты?


2
Очень четкое объяснение можно найти здесь: debian-administration.org/article/69/…
jplandrain

Я суммировал комментарии и техническую документацию о: Следующие пакеты были сохранены, я приглашаю вас прочитать в моей статье и оставить комментарии, чтобы это могло быть улучшено. Спасибо за ваше время, чтобы обратиться к этой петиции. Также желаю вам найти полезный пост. Это его ссылка: guillermo.lopez.co.cr/… Пожалуйста, указывайте эту статью как ресурс, когда кому-то нужна помощь по этой теме.
итан

Ответы:


63

Если для обновления потребуется удалить другой пакет или установить новый пакет, этот пакет будет «сохранен». Как объясняет man-страница для обновления apt-get :

Пакеты, установленные в настоящее время с доступными новыми версиями, извлекаются и обновляются; ни при каких обстоятельствах установленные в настоящее время пакеты не удаляются или пакеты, которые еще не установлены, извлекаются и устанавливаются.

Чтобы пройти это, вы можете сделать

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

Это позволяет устанавливать новые пакеты. Он сообщит вам, какие пакеты будут установлены, и подскажет, прежде чем делать установку.


6
Хорошо, это самое ясное объяснение. Страница man, на которую вы ссылаетесь на die.net, не включает параметр --with-new-pkgs. Это делает: manpages.debian.org/cgi-bin/man.cgi?query=apt-get
Чарльз Ропер

1
Но я обновляю и обновляю все пакеты, так почему же эти пакеты не обновляются?
Nullpointer

2
@Nullpointer "apt-get upgrade" не будет устанавливать новые пакеты (если вы не укажете флаг). Без флага, если обновление существующего пакета потребует установки нового пакета, это обновление не произойдет.
Чад

Это не работает для меня (Ubuntu 19.04) и приводит к тому же сообщению, что и «apt upgrade», а именно «сохранено».
Марк

18

Основной отчет заключается в том, apt-get upgradeчто не будут обновляться пакеты, для которых менеджер пакетов хотел бы удалить и переустановить пакет. Это часто случается в исправлениях безопасности, потому что зачастую это были библиотеки, предшествовавшие окончательной распространяемой компиляции, которые были исправлены. Функциональность "давай и удаляй что-нибудь" существует, apt-get dist-upgradeно обязательно запусти ее apt-get updateсначала на случай, если ребята из апстрима выяснили что-то со времени твоей последней попытки. Иногда они пропускают вещи и быстро их исправляют.


3

Попробуй apt-get dist-upgrade. Со страницы руководства:

dist-upgrade

dist-upgradeв дополнение к выполнению функции upgrade, также интеллектуально обрабатывает изменение зависимостей с новыми версиями пакетов; apt-get имеет «умную» систему разрешения конфликтов, и она будет пытаться обновить наиболее важные пакеты за счет менее важных, если это необходимо. Таким образом, dist-upgradeкоманда может удалить некоторые пакеты. /etc/apt/sources.listФайл содержит список мест , из которых можно извлечь нужные файлы пакета. Смотрите также apt_preferences(5)механизм переопределения общих настроек для отдельных пакетов.

В то время как эта команда будет использоваться для обновления до новой основной версии операционной системы, это не делать это по умолчанию. Файл /etc/apt/sources.listдолжен быть изменен на новую версию и затемdist-upgrade используется.


1

Просто сделать

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

обновить проведенные пакеты.

Тогда беги apt-get upgradeи у тебя все будет хорошо.


5
Это неверно НЕapt-get dist-upgrade будет обновлять вашу ОС до новой версии. чтобы увидеть различия. man apt-get
BT643

@ BT643 (и те, кто проголосовал за комментарий), пожалуйста, уменьшайте неправильные ответы, а не оставляйте комментарий. Особенно явно неправильные ответы, подобные этому, которые увековечивают общее заблуждение. Мы рассчитываем на то, что голоса принесут хороший контент на первый план, а также подтолкнут неверный контент.
Тердон

1
@terdon Я пытался, но мне не хватает представителей :) (нужно 125, чтобы понизить голос).
BT643

Разве первая часть (установка / обновление только отложенных пакетов) не является хорошим ответом? Затем продолжите обновление. Удаление оскорбительного совета о dist-upgrade звучит как лучшая идея, чем просто опускание частично правильного ответа ...
Xen2050

Сначала рассмотрите возможность использования: sudo apt-get --with-new-pkgs upgradeчто не будет иметь побочных
эффектов, так
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.