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


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

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

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


720
2017-07-31 21:59


происхождения


Строго говоря, я бы сказал, что это предупреждение, а не ошибка. - Kazark


ответы:


В соответствии с статья о debian-administration.org,

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

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

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

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

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

Это имеет смысл не маркировать сохраненные пакеты как «вручную установленные», что может привести к увеличению вмешательства пользователя в линию (см. Комментарии).

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

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

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

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

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

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


704
2017-07-31 22:15



Поскольку это приемлемый ответ, он действительно нуждается в обновлении, чтобы предупредить об использовании dist-upgrade на стабильной системе, как указывали многие другие ответы ниже. Лично я думаю, что есть более простой / безопасный ответ, который необходимо поощрять: apt-get install <список pkgs> - Cas
Кас, должен ли я добавить, что может быть опасно запускать dist-upgrade на стабильной системе? Почему именно это опасно? (Честно говоря, я не знаю, насколько это хорошо.) - mac9416
Eсть Ответ на ошибку сервера что объясняет dist-upgrade более подробно. Я думаю, что просто стоит уточнить (не опасно как таковой), что он может обновить всю систему, которая может быть выше того, что пользователь ожидает / хочет, то есть в примере OP они задаются вопросом, почему сгиб сдерживается. - Cas
Обратите внимание, что sudo apt-get dist-upgrade может также Удалить пакеты. Следовательно, лучше всегда проверять список изменений, которые будут сделаны, прежде чем согласиться с ними при запуске sudo apt-get dist-upgrade, - Eliah Kagan
@EliahKagan Могу ли я добавить, что даже apt-get upgrade может удалить пакеты? Он всегда будет делать это, когда конфликт версий будет иным. Думать о llvm3.6 против llvm3.6v5 (с «v5», что означает, что он был скомпилирован с gcc 5). Эти двое не может сосуществовать, только одна из них может храниться в системе. Так да dist-upgrade может также удалить некоторые пакеты, но это не только dist-upgrade это сделало бы это; при определенных обстоятельствах, upgrade будет, также. - syntaxerror


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

The following packages have been kept back:

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

apt-get install <list of packages kept back>

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


468
2017-09-08 09:14



Когда пакеты сохраняются таким образом, и я вручную apt-get upgrade <list of packages>, если я повторю apt-get upgrade, он перечислит соответствующие пакеты, которые больше не требуются, и что я могу использовать apt autoremove удалить их, что я делаю, а затем один последний apt-get upgrade и они больше не перечислены как сдерживаемые ... Очень странно. Есть предположения? - cram2208
Есть ли apt-get install также удалять пакеты, когда это необходимо, для разрешения ситуаций с грубой зависимостью, или вам придется запускать отдельный apt-get remove для выполнения этой части процесса обновления? - mac9416
@ cram2208 Я считаю, что это ожидаемое поведение. Пакеты, которые были «автоматически установлены и [...] больше не нужны», - это предыдущие версии обновленных пакетов, которые теперь больше не нужны. apt autoremove затем удаляет эти неиспользуемые зависимости. - Alex
Если для обновления потребуется новый пакет для установки, пакет будет «сохранен». Сначала рассмотрим использование: sudo apt-get --with-new-pkgs upgrade которые бы не имеют побочного влияния на то, чтобы пакеты были помечены как установленные вручную - l --marc l
@ mac9416 да, это так. - jarno


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

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

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

Лучший способ обработки сохраненного пакета:

sudo aptitude

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

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

Установленный пакет.


170
2017-12-24 00:43



apt-get dist-upgrade является опасным, если у вас есть плохие хранилища в /etc/apt/sources.list*, Хорошо знать, что dist-upgrade обновления все пакеты, но с репозиториями по умолчанию, это должно быть хорошо. Не с помощью dist-upgrade может быть опасным, так как вы можете пропустить обновления для системы безопасности. - Flimm
apt-get dist-upgrade Можно Удалить а также добавлять пакеты, но это не очень опасно. Любая команда установки пакета может нанести серьезный ущерб если у вас есть проблемы с sources.list файл! Обычный apt-get upgrade команда установит любой пакет из любого источника программного обеспечения, который включен; dist-upgrade таким образом, не является уникальным. Кроме того, используя aptitude для выполнения любой операции вообще, по крайней мере на amd64, намного опаснее, чем запуск apt-get dist-upgrade, в выпуске, где ошибка 831768 не фиксировано. - Eliah Kagan
Для меня было проще (локальная машина с запуском X) просто открыть синаптический режим и принудительно обновить пакет. По какой-то причине это, казалось, не появилось вообще, где вы описали синаптическую. - djvs
Также sudo aptitude safe-upgrade - msanford


Почему вы не пытаетесь этот ответ Unix SE:

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

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

apt команда (дружественная в apt-get) доля это apt-get вариант,

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


60
2017-12-20 20:16



+1, потому что у него нет побочного влияния на то, чтобы пакеты были помечены как установленные вручную. - ctrl-alt-delor
Обратите внимание на то, кто когда-либо читал мой комментарий выше: не имеет побочного эффекта маркировки, установленного вручную, это хорошо. Мне нравится этот ответ. - ctrl-alt-delor
Поэтому, если вы используете sudo apt-get --with-new-pkgs upgrade  без Бег apt-mark auto <pkg>, все будет хорошо? Требуется ли вторая команда, если вы делать выбрать вручную установить пакеты с обратной связью? - mac9416
Да. apt-mark auto <pkg> должны быть необходимы только для того, чтобы пометить пакет как автоматически установленный (здесь справочная страница). - Pablo Bianchi


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

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

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

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


30
2017-07-31 22:16



Есть ли способ определить, нуждается ли удерживаемый пакет в зависимости, которая не может быть установлена ​​или если она удерживается, потому что от нее зависят другие пакеты. У меня много пакетов, и я считаю, что оба этих случая могут применяться в моей системе. - Jake
Спасибо, вторая причина была для меня проблемой. Даже apt-get dist-upgrade отказался установить его. Проверка пакета с aptitude показала, что он зависит от пакета, который недоступен. Думаю, мне придется подождать. - jlh


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

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

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

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


18
2017-07-31 22:17



На чем вы основываете эту вероятность, не зная, что он запустил apt-get upgrade или apt-get dist-upgrade (alt. Эквиваленты aptitude)? - andol
это самая встречающаяся проблема в вопросах поддержки и ошибок - txwikinger
Согласовано. Вероятно, вам стоит подождать и проверить apt_preferences. Это часто происходит из-за архивов разработки, где зависимости приложений и доступных пакетов меняются очень быстро. Подождите, пока они успокоятся, и вам может не понадобиться dist-upgrade вообще. Если вы все еще хотите dist-upgrade, а затем посмотрите на новые пакеты, которые нужно установить, и пакеты, которые нужно удалить, прежде чем идти вперед. - Umang
Это мой случай, потому что я получаю сообщение «назад», используя dist-upgrade - Postadelmaga
В тех случаях, когда эта проблема вызвана ошибкой с предпочтениями (пиннинг), я обнаружил, что переустановка поддерживаемых пакетов помогла мне: apt-get install --reinstall <packages>, - tanius


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

sudo aptitude safe-upgrade,

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

Из man aptitude:

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

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


18
2017-08-12 08:02





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

Если вы запустите:

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

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


9
2017-12-27 19:20



Обновляет определенные пакеты (и их зависимости) без обязательств (рисков) dist-upgrade. - John Mee


Я обнаружил, что aptitude лучше справляется с обновлением пакетов, если версии отличаются незначительно. У меня была такая ситуация:

me@compy:/etc/apt$ apt-cache policy gzip
gzip:
  Installed: 1.3.5-15
  Candidate: 1.3.5-15+etch1
  Version table:
     1.3.5-15+etch1 0
        500 http://archive.debian.org etch/main Packages
 *** 1.3.5-15 0
        100 /var/lib/dpkg/status

Это сделало apt-get сдерживанием обновления, но aptitude обновил его просто отлично. Я не уверен, какой алгоритм используется для определения необходимости обновления пакета или нет. Я предполагаю, что у этих двух была такая же версия, только у другого «определителя». Но в любом случае apt-get не обновил бы его, но способность была бы.


7
2018-05-02 20:48





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

sudo aptitude full-upgrade

7
2018-03-22 11:40



Даже aptitude upgrade работал на меня. - Bibhas
Я использую Ubuntu 14.04 и у меня нет aptitude командная строка - ahmed hamdy
apt-get dist-upgrade дал мне такое же сообщение, но это решило это для меня. У меня был пакет, который прерывал обновление другого пакета. Мне не нужен тот, который я установил, поэтому aptitude full-upgrade дал мне возможность удалить его, чтобы он мог обновить все остальное. - f.ardelian