it-swarm.com.ru

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

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

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

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

829
jfoucher

Согласно статья на 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 и надеяться, что она знает свои вещи.

845
Michael Crenshaw

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

The following packages have been kept back:

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

apt-get install <list of packages kept back>

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

488
user88285

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

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

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

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

Sudo aptitude

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

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

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

173
mudy

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

Sudo apt-get --with-new-pkgs upgrade

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

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

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

128
Pablo Bianchi

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

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

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

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

32
jbowtie

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

Sudo aptitude safe-upgrade.

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

От man aptitude:

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

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

23
Afilu

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

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

Edit:

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

20
txwikinger

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

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

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

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

9
John Lawrence Aspden

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

Sudo aptitude full-upgrade
8
Singh

Я обнаружил, что 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 не обновит его, а aptitude.

7
Alexander Torstling

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

3
Kazark

В моем случае были задержаны пакеты, связанные с 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 г.)

3
crysman

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

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

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

2
Elliptical view

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

apt-get install --reinstall libjpeg-progs

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

Источник: https://ubuntuforums.org/showthread.php?t=2321702&p=13476183#post1347618

2
Stephan Henningsen

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

1
Johnny

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

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

Sudo apt-get --purge remove mysql-utilities

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

Sudo apt-get -f install

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

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

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

0
Vasyl Lyashkevych