apt говорит, что пакеты были сохранены, что делать?


22

Вывод apt-get upgrade:

The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl

Что это значит? Должен ли я принять меры? Если так, то?

Ответы:


36

Быстрое и простое решение:

У меня была такая же проблема, несколько раз. НЕ делай sudo apt-get dist-upgradeпервым. Очень важный. **** ПРИМЕЧАНИЕ. Это решение предназначено для машин на основе Debian, но не будет работать на KDE Neon . Для обновления KDE Neon необходимо использовать sudo pkcon update. ****

Почему?

Это может сделать вашу систему очень нестабильной, программы могут зависать, и вы можете потерять много функциональности в вашей ОС.

Вы ДОЛЖНЫ установить каждый пакет отдельно, ОДНАКО , во время этого процесса другие зависимости также будут установлены автоматически, и ваша проблема будет решена в течение нескольких минут.

У меня не было проблем со следующим решением. Это довольно быстро и легко.


Сначала сделайте это:

apt list --upgradable

  • Это покажет список пакетов, которые могут быть обновлены.

Далее сделайте это:

  • Начните с начала списка с первого пакета и введите:

sudo apt-get install package-name-here

  • Это будет проходить через процесс установки и вытащить / установить зависимости.

После того, как этот процесс завершится, сделайте это:

apt list --upgradable

  • Это снова покажет, какие пакеты могут быть обновлены. Ваш список пакетов теперь должен уменьшаться. Следуйте списку пакетов и введите apt list --upgradableпосле каждой установки пакета. Это займет всего пару минут.

В заключение:

sudo apt-get autoclean

sudo apt-get update && sudo apt-get dist-upgrade

Если это решение сработало для вас, пожалуйста, не забудьте высказать его, чтобы правильное решение было доступно для других и находилось в верхней части списка ответов.

Если по какой-либо причине это решение не работает для вас, см. Ответ пользователя GAD3R ниже. Это также хорошее решение.

Благодарю.


1
Для меня пакет был Ubuntu-минимальным. Ваши инструкции сработали отлично.
DeanM

Не используйте это решение, если вы используете KDE Neon.
Грегори

11

Что это значит?

The following packages have been kept back:

Ответ здесь

Это означает, что есть новые версии этих пакетов, которые по какой-то причине не будут установлены. Возможные причины: сломанные зависимости (пакет, от которого он зависит, не имеет версии, доступной для загрузки) или новые зависимости (пакет стал зависеть от новых пакетов со времени последней версии).

Должен ли я принять меры?

Вы должны использовать dist-upgradeдля установки новых зависимостей и обновления пакетов:

sudo apt-get dist-upgrade

Проблема может быть решена путем запуска, dist-upgradeесли не нужно:

Исправить нарушенные зависимости

sudo apt-get -f install 

Удалите некоторые пакеты, которые больше не установлены в вашей системе:

sudo apt-get autoclean

Поставьте нужный пакет на удержание:

echo "<package_name> hold" | dpkg --set-selections

Переконфигурируйте именованный пакет:

dpkg-reconfigure <package_name>

3

Из этого ответа Unix SE :

Во-первых, как уже упоминалось выше, пожалуйста, НЕ модернизируйте производственную систему! Хотя dist-upgrade будет «решать» сохраненные пакеты, это определенно не является решением этой проблемы и, скорее всего, принесет вам больше горя, чем пользы, если вы запустите его, не зная последствий для вашей системы.

Если обновление пакета требует установки дополнительных пакетов, он будет «сохранен» при запуске sudo apt-get upgrade.

Как упоминалось выше, вы можете установить эти «скрытые» пакеты вручную, явно запустив их, sudo apt-get install [paste kept back packages here]но это пометит эти пакеты как «установленные вручную», что часто не то, что нам нужно.

Для автоматической установки любых дополнительных пакетов, необходимых для обновления «сохраненных» пакетов, при этом не отмечая «сохраненные» пакеты как установленные вручную, просто запустите sudo apt-get --with-new-pkgs upgrade.


Подробнее о --with-new-pkgsи побочных эффектах других альтернатив здесь .
Пабло А

2

Я включил этот ответ в свой блог. Если вы хотите увидеть, что вы можете перейти по этой ссылке .

Вышеуказанная ошибка очень распространена в терминале Ubuntu при попытке обновить ( apt-get upgrade). Обычно это происходит потому, что зависимости одного устанавливаемого вами пакета изменились. Для того, чтобы обновить, вы должны сначала обновить и те. Так что решить это очень просто. Вы сможете увидеть те пакеты, которые хранятся ниже этого сообщения об ошибке. В качестве примера я вижу следующие пакеты в списке:

gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Не просто печатать. sudo apt-get dist-upgradeЭто очень опасно, поскольку устанавливает все ожидающие обновления. Это может привести вашу рабочую среду в крайне нестабильное состояние.

Поэтому мое мнение заключается в использовании известных

sudo apt-get install [package]

Вы можете заменить [package]любой пакет в сообщении об ошибке. Также вы можете поместить их в виде списка (просто скопируйте и вставьте его). В качестве примера в моем случае я могу ввести

sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Если вы хотите сделать

sudo apt-get dist-upgrade

по какой-то причине просто проверьте список пакетов, используя опцию simulate -s( sudo apt-get -s dist-upgrade) или без -sопции, которую вы можете прервать выполнение, прежде чем принять. (вы всегда можете выбрать вариант нет)


2

Недавно в обновлении безопасности Debian появилось несколько новых зависимостей. В этом случае linux-imageпакет начал требовать linux-firmware, среди нескольких других. Поэтому они были сдержаны и не установлены unattended-upgrade. После некоторого тестирования и подтверждения я смог выборочно установить только эти пакеты, не затрагивая другие ожидающие обновления:

apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')


1

Эта статья хорошо суммирует, почему это происходит:

Если зависимости были изменены для одного из установленных пакетов, поэтому для выполнения обновления необходимо установить новый пакет, который будет указан как «сохраненный».

Решением этой проблемы является их явная установка с

sudo apt install [packages]

Возможно, вы захотите пометить эти пакеты как автоматически установленные, если вы не заботитесь о них самих, а не просто для удовлетворения зависимостей.

sudo apt-mark auto [packages]

Чтобы этого не происходило в первую очередь, я рекомендую использовать

sudo apt --with-new-pkgs upgrade

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


Два больших пальца за --with-new-pkgs! И позвольте мне еще раз подчеркнуть, что « НЕ ДИСТРАГНИЗИРУЙТЕ никакую производственную систему! Хотя дистрибуция« решит »сохраненные пакеты, это определенно не является решением этой проблемы и, скорее всего, принесет вам больше горя, чем пользы, если вы запустите его, не зная последствий для вашей системы. "
XPT
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.