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

Я только что добавил репозиторий PPA для версии GIMP для разработки, но я получаю эту ошибку:

$ apt-get update && apt-get upgrade...The following packages have been kept back:  gimp gimp-data libgegl-0.0-0 libgimp2.0

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

Согласно с статья о debian-administration.org,

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

Осторожное решение 1:

По Ответ Пабло, ты можешь бежать sudo apt-get --with-new-pkgs upgrade, и он установит сохраненные пакеты.

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

Если решение Пабло работает для вас, пожалуйста, поддержите его. Если нет, пожалуйста, прокомментируйте, что пошло не так.

Осторожное решение 2:

Осторожное решение состоит в том, чтобы запустить sudo apt-get install <list of packages kept back>. В большинстве случаев это даст сохраненным пакетам то, что им нужно для успешного обновления.

Агрессивное решение:

Более агрессивным решением является запуск sudo apt-get dist-upgrade, что приведет к принудительной установке этих новых зависимостей.

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

Так что, если вы окажетесь в месте, где "осторожное решение" не работает, dist-upgrade мочь работа ... но вам, вероятно, лучше узнать немного больше об APT и решить проблемы с зависимостями "вручную", устанавливая и удаляя пакеты в каждом конкретном случае.

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

Всякий раз, когда вы получаете от команды apt-get upgrade сообщение

The following packages have been kept back:

затем обновить один или все сохраненные пакеты, не выполняя обновление дистрибутива (это то, что dist-upgrade делает, если я правильно помню) заключается в том, чтобы выдать команду:

apt-get install <list of packages kept back>

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

Смотрите также: Зачем использовать apt-get upgrade вместо apt-get dist-upgrade?

Попробуй этот ответ Unix SE:

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

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

apt команда (дружественная альтернатива к apt-get) поделитесь этой опцией.

С помощью apt install <pkg> вместо этого будет помечен pkg как "установленный вручную"!! Чтобы снова пометить его как "автоматически установленный", используйте apt-mark auto <pkg> (см. также подкоманду showmanual). Дополнительная информация на этот ответ.

apt-get dist-upgrade опасен для стабильной окружающей среды,

  1. неправильный источник.настройка списка, и вы получите сломанную ubuntu.
  2. вы можете обновить все приложение до версии, которая вам не нужна.

Пример использования: обновление ядра отложено, вы просто хотите обновить ядро, не хотите обновлять весь дистрибутив.

Лучший способ справиться с сохраненной посылкой:

sudo aptitude

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

  • Нажмите + в этом списке
  • Нажми g дважды
  • Отвечайте на вопросы debconf, если вас спросят
  • Нажмите кнопку возврата, чтобы продолжить
  • Нажмите Q
  • Нажмите да

Ваш сохраненный пакет установлен.

Обычно есть две причины, по которым вы можете увидеть это сообщение.

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

Это довольно распространенное явление и обычно не является проблемой. Иногда (особенно во время альфа-версии Ubuntu) dist-upgrade предложит удалить множество других программ, и в этом случае вы, вероятно, захотите отменить его.

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

Вы также можете попробовать:

sudo aptitude safe-upgrade

Это безопаснее, чем full-upgrade (первоначально названный dist-upgrade), потому что "пакеты не будут удалены, если они не используются".

От man aptitude:

безопасное обновление

Обновляет установленные пакеты до их последней версии. Установленные пакеты не будут удалены, если они не являются неиспользуемыми /.../ Пакеты, которые в данный момент не установлены, могут быть установлены для устранения зависимостей, если не указана опция командной строки --no-new-installs.

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

В последнем случае просто подождите, когда зависимости будут устранены, он будет установлен в следующий раз.

Редактировать:

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

Это сработало для меня

sudo aptitude full-upgrade

Ubuntu 18.04, 20.04 (и новее) предоставляют упрощенный синтаксис через apt full-upgrade который функционирует как sudo apt-get dist-upgrade.

sudo apt full-upgrade

sudo apt upgrade используется для установки доступных обновлений всех пакетов, установленных в настоящее время в системе, из источников, настроенных с помощью sources.list(5). Новые пакеты будут установлены, если это необходимо для удовлетворения зависимостей, но существующие пакеты никогда не будут удалены. Если обновление пакета требует удаления установленного пакета, обновление для этого пакета не выполняется.

sudo apt full-upgrade выполняет функцию обновления, но будет удалите установленные в данный момент пакеты, если это необходимо для обновления системы в целом..

Примечание: full-upgrade остается в текущем распределении.

Видеть: apt справочная страница: 18.04, 20.04

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

Если ты побежишь:

sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0

Затем новые версии должны быть установлены вместе с их новой зависимостью.

Какое мусорное сообщение. Почему операционная система не может просто делать то, что нужно?