12

Результат apt-get upgrade :

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

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

4 ответа4

16

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

У меня была такая же проблема, бесчисленное количество раз. НЕ делайте сначала sudo apt-get dist-upgrade . Очень важно.

Зачем?

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

У меня не было проблем с решением, которое я предоставлю.

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

Сделай это:

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

Следующий:

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

    sudo apt-get install package-name-here

Это будет проходить через процесс установки и вытащить / установить зависимости. Когда это завершится, сделайте это:

apt list --upgradable

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

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

Благодарю.

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

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

1

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .