Вопрос или проблема
Я не уверен, что вызвало эту ошибку, но вот что говорит вся ошибка, и также она висит как уведомление и мешает мне обновлять любое программное обеспечение с помощью Update Manager – Пожалуйста, предоставьте помощь или скажите мне, как разобраться, что делать, чтобы это исправить.
Не удалось рассчитать обновление
Произошла неразрешимая проблема при расчете обновления.
Пожалуйста, сообщите об этой ошибке в пакет 'update-manager' и включите следующее сообщение об ошибке:
'E:Ошибка, pkgProblemResolver::Resolve сгенерировал разрывы, это может быть вызвано удерживаемыми пакетами.'
Этот пост может решить вашу проблему. Чтобы подытожить,
- Откройте лог файл
/var/log/dist-upgrade/apt.log
в текстовом редакторе. - Найдите любые “сломанные” пакеты и удалите их с помощью
sudo apt-get remove <package>
.
Примечание: в новых версиях лог находится в /var/log/apt/term.log
вместо этого.
Попробуйте:
sudo apt-get update && sudo apt-get upgrade
Затем повторно запустите update-manager.
Я получил эту ошибку при обновлении с 16.04 до 18.04, и в середине процесса пропало электричество.
Вот как выглядела ошибка, и apt-get install -f её не исправил.
$ sudo apt-get dist-upgrade
Reading package lists... Done
Building dependency tree... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
gir1.2-gtk-3.0 : Depends: gir1.2-pango-1.0 (>= 1.40.5) but 1.38.1-1 is installed
Depends: libgtk-3-0 (>= 3.22.29) but 3.18.9-1ubuntu3.3 is installed
hplip : Depends: hplip-data (= 3.17.10+repack0-5) but 3.16.3+repack0-1 is installed
Depends: printer-driver-hpcups (= 3.17.10+repack0-5) but 3.16.3+repack0-1 is installed
Depends: libsane1 (>= 1.0.24) but it is not installed
libhpmud0 : Depends: libsnmp30 (>= 5.7.3+dfsg-1.8ubuntu3~dfsg) but 5.7.3+dfsg-1ubuntu4.2 is installed
onboard : Depends: onboard-common (< 1.4.1-2ubuntu1.1) but it is not installed
Depends: onboard-common (>= 1.4.1-2ubuntu1) but it is not installed
Depends: libhunspell-1.6-0 but it is not installed
Recommends: onboard-data (>= 1.4.1-2ubuntu1) but 1.2.0-0ubuntu5 is installed
python3 : Depends: python3.6 (>= 3.6.7-1~) but it is not installed
Depends: libpython3-stdlib (= 3.6.7-1~18.04) but 3.5.1-3 is installed
python3-apt : Depends: libapt-inst2.0 (>= 1.6.5~) but 1.2.29ubuntu0.1 is installed
Depends: libapt-pkg5.0 (>= 1.6.5~) but 1.2.29ubuntu0.1 is installed
python3-cryptography : Depends: python3-asn1crypto (>= 0.21.0~) but it is not installed
Depends: python3-idna (>= 2.1) but 2.0-3 is installed
python3-gdbm : Depends: libgdbm5 (>= 1.14) but it is not installed
python3-pil : Depends: libwebp6 (>= 0.5.1) but it is not installed
Depends: libwebpdemux2 (>= 0.5.1) but it is not installed
Depends: libwebpmux3 (>= 0.6.1-2) but it is not installed
Recommends: python3-olefile but it is not installed
python3-systemd : Depends: libsystemd0 (>= 233) but 229-4ubuntu21.16 is installed
python3-uno : Depends: libreoffice-core (= 1:6.0.7-0ubuntu0.18.04.2) but 1:5.1.6~rc2-0ubuntu1~xenial6 is installed
Depends: python3.6 but it is not installed
Depends: uno-libs3 (>= 5.3.0~alpha) but 5.1.6~rc2-0ubuntu1~xenial6 is installed
python3.6-dev : Depends: python3.6 (= 3.6.7-1~18.04) but it is not installed
totem-plugins : Depends: libgtk-3-0 (>= 3.19.4) but 3.18.9-1ubuntu3.3 is installed
Depends: liblirc-client0 but it is not installed
Depends: libtotem0 (>= 3.26.0-0ubuntu6.2) but 3.18.1-1ubuntu4 is installed
Depends: totem (= 3.26.0-0ubuntu6.2) but 3.18.1-1ubuntu4 is installed
Depends: gir1.2-totem-1.0 (= 3.26.0-0ubuntu6.2) but 3.18.1-1ubuntu4 is installed
virtualbox : Depends: python3.6 but it is not installed
Depends: libgsoap-2.8.60 but it is not installed
Depends: libpng16-16 (>= 1.6.2-1) but it is not installed
Recommends: libqt5core5a (>= 5.9.0~beta) but 5.5.1+dfsg-16ubuntu7.5 is installed
virtualbox-qt : Depends: libqt5core5a (>= 5.9.0~beta) but 5.5.1+dfsg-16ubuntu7.5 is installed
Depends: libqt5widgets5 (>= 5.7.0) but 5.5.1+dfsg-16ubuntu7.5 is installed
Depends: libqt5x11extras5 (>= 5.6.0) but 5.5.1-3build1 is installed
E: Unmet dependencies. Try using -f.
Я также пробовал sudo apt-get remove
пакеты из /var/log/dist-upgrade/apt.log, но это тоже не сработало.
Это сработало для меня
dpkg -l | grep ^iU | awk '{print $2}' | xargs sudo dpkg --purge
Это удалило сломанные пакеты, затем я запустил
sudo apt install -f
Это скачало и установило пакеты.
Для меня проблема выглядела так
The following packages have unmet dependencies.
libglib2.0-dev : Depends: libglib2.0-0 (= 2.64.2-1~fakesync1) but 2.64.3-1~ubuntu20.04.1 is to be installed
Depends: libglib2.0-bin (= 2.64.2-1~fakesync1)
Это было вызвано неправильным выбором типа обновлений, которые я хотел загрузить. Я исправил это, открыв Software & Updates
, выбрав Updates
, и убедился, что выбрано All updates
для For other packages, subscribe to:
. Смотрите картинку ниже
Затем я запустил обычное apt update && apt dist-upgrade
, и затем смог установить эту библиотеку.
Я столкнулся с этой проблемой вчера после того, как кто-то перезапустил систему во время обновления версии ОС. Ни один из вышеперечисленных подходов не сработал из-за огромного количества проблем (~1500 пакетов).
Чтобы восстановиться, я перешел в /var/log/apt/history.log
и посмотрел последнюю запись, которая содержит три очень длинных списка, описывающих, что пытались сделать, когда обновление ОС не удалось. Они состоят из трех списков “Upgrade:” “Install:” “Remove:” вида:
Upgrade: package1:arch (old, new), package2:arch (old, new),
...
Возьмите эти три списка в ваш любимый текстовый редактор, поддерживающий регулярные выражения, и замените скобки до запятой на новую строку. Для раздела “Remove:” добавьте “-” для оставленных строк:
Install:
speech-dispatcher-espeak-ng:amd64
fdisk:amd64
libgoa-backend-1.0-1:amd64
...
Upgrade:
speech-dispatcher-audio-plugins:amd64
ubuntu-settings:amd64
libmpc3:amd64
...
Remove:
qtdeclarative5-ubuntu-ui-toolkit-plugin:amd64-
python-sip:amd64-
gstreamer1.0-plugins-ugly-amr:amd64-
...
“-” был важным открытием, потому что, если вы не сможете одновременно установить и удалить пакеты, вы не сможете справиться со многими циклами зависимостей.
Сохраните копию этого файла, чтобы обратиться к нему позже, но сделайте новую копию, где вы почистите его: удалите все добавочные строки, оставив только строки package:arch
.
Запустите apt с использованием этого файла packages.txt следующим образом
xargs -a packages.txt sudo apt install
Эта команда выполнит все добавки/удаления, которые система собиралась сделать до того, как была сломана, и должна представлять собой согласованный набор.
При условии завершения вы сможете затем завершить все, что упустили, с sudo apt install -f
и sudo apt dist-upgrade
.
Завершите созданием нового списка с только списком “Install:” пакетов, передайте их в apt-mark auto
, чтобы отметить пакеты как автоматически установленные (выбор обновления, не ваш).
xargs -a installed.txt sudo apt-mark auto
Надеюсь, это поможет кому-то из тех, кто думал, что их система сломана.
Эта ошибка может быть вызвана неполной установкой пакета.
У вас есть два варианта, 1) исправить сломанную установку, или 2) откатить (или удалить) сломанную установку.
Так как это не упоминалось выше, чтобы откатить и удалить сломанную установку, выйдите из synaptic (если вы все еще в нем) и введите эти команды в терминале:
sudo apt-get update # Убедитесь, что список ваших пакетов актуален
sudo apt-get autoremove # Удаляет пакеты, "которые больше не требуются"
Затем, чтобы убедиться, что сломанные пакеты удалены, зайдите снова в synaptic и выберите Edit
| Fix broken packages
, и не должно быть сломанных пакетов.
Обратите внимание, это не исправляет сломанную установку, это просто позволяет вам продолжать в synaptic с другой установкой или удалением и т.д.
Что произошло, так это то, что вы начали установку пакета, а затем частично из-за ошибки после установки некоторых зависимостей, что-то пошло не так, оставив неиспользуемые зависимые пакеты и неполную установку.
Ответ или решение
Ошибка, о которой идет речь: "E:Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages", часто возникает в системах на базе Debian/Ubuntu при попытке обновления или установки пакетов с использованием менеджера пакетов APT. Причиной этой ошибки может быть конфликт зависимостей, часто вызванный "удерживаемыми" (held) пакетами, которые по какой-либо причине не могут быть автоматически обновлены или удалены.
Теоретическая часть
Основы системы управления пакетами APT строятся на тесно связанных цепочках зависимостей. При обновлении системы или установке новых пакетов, APT должен гарантировать, что все зависимости пакета удовлетворены. Однако, в некоторых случаях, одна или несколько зависимостей могут быть "удерживаемыми", что означает, что они маркированы для удержания на определенной версии. Это может произойти по ряду причин: ручное удержание пакета пользователем, наличие критических обновлений, которые еще не выпущены для зависимого пакета, или же просто конфликты между новыми и старыми пакетами.
Такой конфликт приводит к тому, что APT не может "разрешить" проблему зависимостей, и процесс обновления или установки пакетов останавливается с сообщением об ошибке. Это может особенно обостриться, если предыдущие операции с пакетами, такие как частично завершенное обновление системы или установка новой версии ОС, были прерваны.
Пример решения проблемы
Чтобы визуализировать, как можно подойти к этой проблеме, рассмотрим несколько шагов, которые помогут в ее решении:
-
Проверка и исправление пакетов:
- Используйте команду
sudo apt-get update
для обновления списка пакетов. - Выполните
sudo apt-get upgrade
, чтобы увидеть, можно ли разрешить проблему стандартным обновлением.
- Используйте команду
-
Устранение неисправных зависимостей:
- Команда
sudo apt-get install -f
попытается исправить неисправные зависимости. - Если это не решает проблему, используйте
dpkg -l | grep ^iU
, чтобы найти держимые или поврежденные пакеты, и применитеxargs sudo dpkg --purge
, чтобы их удалить (как описано в вашем примере).
- Команда
-
Анализ логов:
- Проверьте
/var/log/dist-upgrade/apt.log
или/var/log/apt/term.log
для обнаружения проблемных пакетов или зависимостей. - Вы можете также открыть
/var/log/apt/history.log
, чтобы точно увидеть, какие пакеты обновлялись перед сбоем.
- Проверьте
-
Ручное регулирование зависимостей:
- Используйте
sudo apt-mark auto <package>
илиsudo apt-mark manual <package>
, чтобы управлять статусом установки пакетов. - Если необходимо перейти на конкретную версию пакета, команда
sudo apt-get install <package>=<version>
может быть полезной.
- Используйте
-
Удаление и переустановка пакетов:
- Можно использовать команду
sudo apt-get autoremove
для удаления ненужных зависимостей после успешного удаления проблемных пакетов.
- Можно использовать команду
Применение
Эти шаги позволяют не только устранить текущую проблему, но и дают более глубокое понимание работы с пакетами в Ubuntu, что может быть полезным в дальнейшей работе с системами на основе Debian. В контексте предприятия, такие знания позволяют администратору не только оперативно решать проблемы с обновлениями, но и планировать обновление систем с минимальными рисками.
Заключительно, чтобы избежать подобных ситуаций в будущем, рекомендуется:
- Регулярно проверять и обновлять систему, следя за возможными конфликтами зависимостей.
- Использовать инструменты, такие как Unattended Upgrades, чтобы автоматически управлять обновлениями, если это возможно в вашей системе.
- Сохранять резервные копии перед выполнением крупных операций системных обновлений или миграций.
Этот подход обеспечит не только стабильность и безопасность систем, но и сократит время простоя в случае непредвиденных обстоятельств.