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

728

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

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

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

    
задан jfoucher 31.07.2010 в 23:59
источник

16 ответов

715

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

If the dependencies have changed on one of the packages you have installed so that a new package must be installed to perform the upgrade then that will be listed as "kept-back".

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

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

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

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

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

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

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

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

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

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

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

    
ответ дан mac9416 01.08.2010 в 00:15
источник
470

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

The following packages have been kept back:

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

apt-get install <list of packages kept back>

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

    
ответ дан user88285 08.09.2012 в 11:14
171

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

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

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

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

sudo aptitude

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

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

Установленный вами поддерживаемый пакет.

    
ответ дан mudy 24.12.2010 в 01:43
69

Почему вы не попробуете этот ответ Unix SE :

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

This allows new packages to be installed. It will let you know what packages would be installed and prompt you before actually doing the install.

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

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

    
ответ дан Pablo Bianchi 20.12.2016 в 21:16
30

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

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

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

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

    
ответ дан jbowtie 01.08.2010 в 00:16
19

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

sudo aptitude safe-upgrade .

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

От man aptitude :

safe-upgrade

Upgrades installed packages to their most recent version. Installed packages will not be removed unless they are unused /.../ Packages which are not currently installed may be installed to resolve dependencies unless the --no-new-installs command-line option is supplied.

    
ответ дан Afilu 12.08.2014 в 10:02
18

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

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

Edit:

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

ответ дан txwikinger 01.08.2010 в 00:17
9

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

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

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

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

    
ответ дан John Lawrence Aspden 27.12.2012 в 20:20
8

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

sudo aptitude full-upgrade
    
ответ дан Singh 22.03.2013 в 12:40
7

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

[email protected]:/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 не обновил бы его, но способность была бы.     

ответ дан Alexander Torstling 02.05.2012 в 22:48
3

Я столкнулся с этой проблемой при выпуске нового ядра. (Возможно, потому что у меня есть нестабильные обновления.) Я нашел самый простой способ сделать установку через графический установщик Ubuntu ( update-manager ).

    
ответ дан Kazark 16.11.2011 в 21:07
3

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

Чтобы решить эту проблему, мне не пришлось использовать ни dist-upgrade , ни ручную apt-get install xxx .

То, что я сделал и помогло, было простым и чистым :

sudo apt-get update
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get upgrade

Мне пришлось вручную подтвердить обновление Grub и его конфигурацию.

Затем я просто работал с компьютером некоторое время, а затем снова появился диалоговое окно обновления, в котором, наконец, включалась секция «Ubuntu base» с ядром и связанная с ним. Обновление было выполнено без каких-либо проблем, и я больше не вижу никаких отложенных пакетов.

Кроме того, очень важно помнить, что те * buntu-обновления, в том числе обновления ядра, чувствительны к спячке . У меня эта проблема несколько раз, и я всегда получаю ее, перезапуская и выполните указанные выше шаги.

Так может быть, этого было бы достаточно?!

(описываемая здесь ситуация связана с моим Xubuntu 15.10 в конце декабря 2015 года)

    
ответ дан crysman 29.12.2015 в 15:01
2

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

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

Мне пришлось нажать « детали », а затем « q » для выхода после прочтения сообщения, а затем все прошло нормально.

    
ответ дан Eliptical view 03.08.2016 в 08:41
2

Это выглядит как правильный способ переустановки сохраненного пакета:

apt-get install --reinstall libjpeg-progs

По крайней мере, это сработало для меня, когда libjpeg-progs застрял после обновления с Ubuntu 14.04 до 16.04. Я уверен, что вы можете сделать то же самое с любым другим поддерживаемым приложением, например. gimp .

Источник: Ссылка

    
ответ дан Stephan Henningsen 29.08.2016 в 08:58
1

Фактически, вам нужен коммутатор dselect-upgrade , который устанавливает / удаляет зависимости для конкретного набора пакетов.     

ответ дан Johnny 29.02.2012 в 09:52
0

Я прочитал все сообщения и обнаружил, что есть много интересных объяснений. Я пытался их всех, но не имел никаких результатов полностью. У меня проблема с mysql-utilities , которую я не мог обновить. Обновление было предложено системой.  Итак, я хочу показать некоторые шаги, чтобы сделать это. Конечно, я повторю в некоторые моменты все вышеупомянутые должности. Вот моя ошибка, да, я нашел ее уже существующими сообщениями, но что мне делать дальше?

Следующийшаг:

sudoapt-get--purgeremovemysql-utilities

Результаты,которыемывидимнаизображенииниже.Яудаляюпакетипроверяюэтопокоманде:

sudoapt-get-finstall

Результаты-отлично!Позжеяправильноустановилэтуновуюверсиюпакета.

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

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

    
ответ дан Vasyl Lyashkevych 26.12.2017 в 00:59