Я только что добавил репозиторий 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,
Если зависимости изменились на одном из установленных вами пакетов и для выполнения обновления необходимо установить новый пакет, то он будет перечислен как "keep-back".
Осторожное решение 1:
В ответах Pablo можно запустить sudo apt-get --with-new-pkgs upgrade
, и он установит пакеты keep-back.
Преимущество заключается в том, что пакеты keep-back не будут помечены как "установленные вручную", что может привести к большему вмешательству со стороны пользователя (см. комментарии).
Если решение Pablo работает на вас, пожалуйста, проголосуйте за него. Если нет, прокомментируйте, что пошло не так.
Осторожное решение 2:
Осторожное решение - запустить sudo apt-get install <список пакетов keep-back>
. В большинстве случаев это даст пакетам keep-back то, что им нужно для успешного обновления.
Агрессивное решение:
Более агрессивное решение - запустить sudo apt-get dist-upgrade
, что заставит установить эти новые зависимости.
Но dist-upgrade
может быть довольно опасным . В отличие от upgrade, он может удалить пакеты для разрешения сложных ситуаций с зависимостями. В отличие от вас, APT не всегда достаточно умен, чтобы понять, могут ли эти дополнения и удаления сеять хаос.
Так что если вы оказались в месте, где "осторожное решение" не работает, dist-upgrade
может работать... но, вероятно, вам лучше узнать немного больше об APT и решить проблемы с зависимостями "вручную", устанавливая и удаляя пакеты в каждом конкретном случае.
Думайте об этом, как о ремонте машины... если у вас есть время и вы умеете обращаться с гаечным ключом, вы получите некоторое спокойствие, читая и делая ремонт самостоятельно. Если вам повезло, вы можете подбросить машину своей двоюродной сестре dist-upgrade
и надеяться, что она знает свои вещи.
Я столкнулся с этой проблемой, используя synaptic, потому что он зависал, и чтобы попытаться исправить это, я перезагрузился и попробовал еще раз.
РЕШЕНИЕ: Затем я обнаружил информативный сообщение как часть пакета с некоторыми инструкциями для меня после установки.
Мне пришлось нажать « подробности », а затем « q », чтобы выйти после прочтения сообщения, а потом все пошло нормально.
На самом деле вам нужен переключатель dselect-upgrade
, который устанавливает / удаляет зависимости для конкретного задействованного набора пакетов.
Я прочитал все сообщения и обнаружил, что есть много интересных объяснений. Я пробовал их все, но полностью не получил никаких результатов. У меня проблема с mysql-utilities , которую я не мог обновить. Обновление было предложено системой. Итак, я хочу показать несколько шагов, как это сделать. Конечно, через какие-то моменты я повторю все вышеупомянутые посты. Вот моя ошибка, да, я нашел ее по уже существующим постам, но что мне делать дальше?
Следующий шаг:
sudo apt-get --purge remove mysql-utilities
Результаты, которые мы видим на изображении ниже.Я удаляю пакет и проверяю это командой:
sudo apt-get -f install
Результаты - Отлично! Позже я правильно установил эту новую версию пакета.
Этот способ, я думаю, может помочь большему количеству новых людей, потому что, имея другие пакеты, мы можем делать те же шаги.
Однажды, извините, когда я повторил в некоторых местах другие сообщения.
Похоже, это правильный способ переустановки сохраненного пакета:
apt-get install --reinstall libjpeg-progs
По крайней мере, это сработало для меня, когда libjpeg-progs
зависал после обновления Ubuntu 14.04 до 16.04. Я уверен, что вы можете сделать то же самое с любым другим скрытым приложением, например gimp
.
В моем случае задержанные пакеты были связаны с заголовками linux и ядром . Я пришел к этому, пытаясь решить проблему с красным восклицательным знаком в области уведомлений и невозможностью обновлять пакеты.
Для решения этой проблемы мне не пришлось использовать ни dist-upgrade ни вручную apt-get install xxx .
То, что я сделал и помог, было простым и чистым :
sudo apt-get update
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt-get upgrade
Мне пришлось вручную подтверждать обновление Grub и его конфигурацию.
Затем я какое-то время просто работал с компьютером, а затем снова появился стандартный диалог обновления, наконец, включая раздел «База Ubuntu» с ядром и связанное с ним. Обновление было выполнено без каких-либо проблем, и я больше не вижу задержанных пакетов.
Кроме того, очень важно помнить, что эти обновления * buntu, включая обновления ядра, чувствительны к гибернации - У меня эта проблема возникала несколько раз, и я всегда ее решаю, перезагружая компьютер и выполняя описанные выше действия.
Так может быть, этого будет достаточно?!
(описываемая здесь ситуация связана с моим Xubuntu 15.10 в конце декабря 2015 г.)
Я столкнулся с этой проблемой, когда было выпущено новое ядро. (Возможно, потому, что у меня включены нестабильные обновления.) Я обнаружил, что самый простой способ выполнить установку - использовать графический установщик Ubuntu ( update-manager
).
Обычно это происходит из-за того, что пакет добавил зависимость, и обновление не хочет добавлять ее за вас без разрешения.
Если вы запустите:
sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0
Тогда новые версии должны будут установлены вместе со своей новой зависимостью.
Я обнаружил, что способность лучше справляется с обновлением пакетов, если версии немного отличаются. У меня была такая ситуация:
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 не будет его обновлять, а aptitude обновит.
У меня это сработало
sudo aptitude full-upgrade
Скорее всего, эти пакеты будут сдерживаться, потому что их установка создаст несоответствие зависимостей. Это может произойти либо потому, что вы используете архивы в активной разработке, ppas, либо потому, что используемое вами зеркало не полностью обновлено.
В последнем случае, просто подождите, когда зависимости будут устранены, оно будет установлено в следующий раз.
Правка:
Есть другая возможность, что пакеты могут задерживаться, если на них установлено ограничение, или если они привязаны.
Вы можете также попробуйте:
sudo aptitude safe-upgrade
Это безопаснее, чем full-upgrade
(изначально называлось dist-upgrade), потому что «пакеты не будут удалены, если они не будут использованы».
От man aptitude
:
safe-upgrade
Обновляет установленные пакеты до самой последней версии. Установлены пакеты не будут удалены, если они не используются /.../ Пакеты которые в настоящее время не установлены, могут быть установлены для решения зависимости, если не указан параметр командной строки --no-new-installs прилагается.
Обычно есть две причины, по которым вы можете увидеть это сообщение.
Если обновление программы (через sudo apt-get upgrade
) приведет к добавлению или удалению пакетов, то программа будет сдержана. В этом случае можно использовать sudo apt-get dist-upgrade
, которая предложит добавить или удалить дополнительные программы.
Это довольно часто встречается и обычно не является проблемой. Иногда (особенно во время альфа-объединения) dist-upgrade
предложит удалить множество других программ, и в этом случае вы, вероятно, захотите его отменить.
Если программа зависит от пакетов или версий, которые недоступны, то программа будет сдерживаться. Вы действительно ничего не можете сделать, кроме как подождать в этом случае, так как пакет в основном деинсталлируем. Это может произойти, когда пакеты будут добавлены в репозиторий, когда пакет будет переименован, или когда пакет перестанет предоставлять виртуальный пакет.
Энэ Unix SE хариултыг туршиж үзээрэй :
sudo apt-get --with-new-pkgs upgrade
Энэ нь шинэ багцууд байх боломжийг олгоно. суулгасан. Энэ нь ямар багцуудыг суулгахыг танд мэдэгдэж, суулгалтыг бодитоор хийхээсээ өмнө танд өгөх болно.
apt
command ( friendly altern to apt-get
) энэ сонголтыг хуваалцах.
Үүний оронд apt install
-ийг ашигласнаар pkg-ийг "гараар суулгасан" гэж тэмдэглэх болно !! Үүнийг дахин "автоматаар суулгасан" гэж тэмдэглэхийн тулд apt-mark auto-г ашиглана уу.
(дэд команд showmanual
-г үзнэ үү). Энэ хариултын талаар нэмэлт мэдээлэл .
Есть ли прозрачный прокси между вами и архивом Ubuntu? Похоже, что некоторые из файлов пакетов извлекаются некорректно (что приводит к сбоям GPG). Попробуйте это из командной строки:
curl -I http://extras.ubuntu.com/ubuntu/dists/maverick/Release
Показывает ли это что-то подобное? (Первая строка, показывающая "200 OK", ожидалась бы, если бы все не было полностью сломано.)
HTTP/1.1 200 OK
Date: Thu, 23 Dec 2010 21:08:06 GMT
Server: Apache/2.2.8 (Ubuntu)
Last-Modified: Sun, 10 Oct 2010 23:00:00 GMT
ETag: "f72018-dfca-4924b34083c00"
Accept-Ranges: bytes
Content-Length: 57290
Content-Type: text/plain
Если все выглядит чисто, попробуйте еще раз:
sudo apt-get clean
sudo apt-get update
-.121---906923- apt-get dist-upgrade
опасен для стабильного окружения,
Use case: kernel upgrade kept back, you just want to upgrade the kernel, dont want to upgrade whole distribution.
Better way to handle kept back package:
sudo aptitude
If you have kept back package you should see Upgradeable Packages on the top of the list.
Ваш пакет keep back установлен.
Всякий раз, когда вы получаете от команды apt-get upgrade
сообщение
The following packages have been kept back:
, то для обновления одного или всех пакетов keep-back, без обновления дистрибутива (это то, что делает dist-upgrade
, если я правильно помню), нужно выдать команду:
apt-get install <list of packages kept back>
это решит проблемы keep-back и попросит установить дополнительные пакеты и т.д. как объяснялось в других ответах.
Ubuntu 18.04 (и новее) предоставляет упрощенный синтаксис через apt full-upgrade
, который функционирует как sudo apt-get --with-new-pkgs upgrade
.
sudo apt full-upgrade
sudo apt upgrade
используется для установки доступных обновлений всех пакетов, установленных в настоящее время в системе, из источников, настроенных с помощью sources.list (5). Новые пакеты будут установлены, если это необходимо для удовлетворения зависимостей, но существующие пакеты никогда не будут удалены. Если для обновления пакета требуется удаление установленного пакета, обновление для этого пакета не выполняется.
sudo apt full-upgrade
выполняет функцию обновления, но удаляет установленные в данный момент пакеты, если это необходимо для обновить систему в целом.
На меня и нескольких комментаторов ответа Пабло
sudo apt-get --with-new-pkgs upgrade # No effect
не повлиял. Я не хочу, чтобы мой пакет был помечен как установленный вручную, поэтому я сделал следующее, используя в качестве примера сохраненный пакет docker-ce
:
sudo apt install docker-ce # Answer no, do not install
Отмените установку, ответив n
. Обратите внимание на новые пакеты, которые должны были быть установлены, и установите их:
sudo apt install docker-ce-rootless-extras
Теперь apt upgrade
обновит ранее сохраненный пакет:
sudo apt upgrade # Upgrades docker-ce
The following packages have been kept back:
clang-9 cpp g++ gcc gcc-10-base kali-linux-default lib32gcc-s1 lib32stdc++6 libatomic1 libcc1-0
libclang-common-9-dev libclang-cpp9 libgcc-s1 libgfortran5 libgomp1 libitm1 libllvm9 liblsan0 libobjc4
libpython2-stdlib libquadmath0 libstdc++6 libtsan0 libubsan1 linux-headers-amd64 llvm-9 llvm-9-dev llvm-9-runtime
llvm-9-tools python2 python2-minimal python3-chardet python3-pandas python3-pandas-lib
удачное обновление;apt update просто возвращался к этому и ничего не устанавливал. Также был огромный блок материала, который нужно было автоматически удалить, и все прошло нормально, но все равно не удалось установить сохраненные пакеты. Я попробовал простые варианты 1 и 2 в начале этого потока, и они не сработали.
Так что я просто сделал apt install / весь список сохраненных пакетов /, и все пошло.
] Я никогда раньше не сталкивался с этой проблемой. Я просто подумал, что это удачное обновление было странным; apt upgrade не сработал, но apt install с последующим копированием всего списка прошел без сбоев, и теперь он работает нормально.
И я собираюсь извиниться. Я не использовал дистрибутив ubuntu (я только что понял это). Я действительно обновлял установку Kali, когда все это произошло. Я никогда не видел ничего подобного в Ubuntu.
Сообщите мне, следует ли мне удалить этот пост (все еще новый).
Рон
Для очень специфического аспекта этой проблемы, когда проприетарные драйверы nvidia наполовину обновлены до новой версии, я переустановил их с помощью диспетчера драйверов. Чтобы дать некоторый контекст: я застрял на полпути между версиями драйвера 440 и 450, и весь пакет пакетов libnvidia 440 был оставлен. Это привело к тому, что мой кубунту застрял на экране всплеска после grub. Чтобы войти в систему, мне пришлось добавить «nomodeset» к команде grub, как описано здесь .
В этом конкретном случае
sudo apt-get --with-new-pkgs upgrade
не возымел действия. Однако мне удалось переустановить драйверы с помощью дополнительного управления драйверами. В моем случае, в Kubuntu я запустил
sudo kubuntu-driver-manager
В Ubuntu вы можете получить то же самое через Системные настройки> Система> Программное обеспечение и обновления> Дополнительные драйверы
. Там я выбрал драйвер 450, и графические драйверы были переустановлены, в результате машина правильно загружается.
После do-release-upgrade
ваш сторонние или частные репозитории (например, PPA) могут быть отключены. Это может остановить обновление пакета, потому что он больше не может находить нужные ему зависимости и / или старые пакеты конфликтуют с более новыми пакетами.
Просмотрите свои файлы .list
, обычно в /etc/apt/sources.list.d
, чтобы узнать, что нужно повторно включить.
Затем запустите apt update
и повторите попытку.
Это случилось со мной после do-release-upgrade
на виртуальной машине Google.