#Что означает ошибка
held broken packages
«The following packages have unmet dependencies» и «You have held broken packages» в Debian, Ubuntu и Mint означают, что менеджер пакетов не может подобрать совместимые версии: в системе есть пакеты из сторонних репозиториев, частично установленные обновления или «зафиксированные» (hold) пакеты.
Не используйте --force-yes и не удаляйте системные пакеты вслепую: можно потерять рабочий стол.
Начните с исправления сломанных зависимостей и обновления индекса.
Выполните apt --fix-broken install и проверьте репозитории.
#Причины и решения
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| КонфликтПакеты. | Проявляется как «held broken packages» или близкий по смыслу сбой. | fix-broken. |
| РепозиторииСмешаны. | Проявляется как «held broken packages» или близкий по смыслу сбой. | Исправьте. |
| ВерсииНесовпадение. | Проявляется как «held broken packages» или близкий по смыслу сбой. | Обновите. |
| holdЗакреплены. | Проявляется как «held broken packages» или близкий по смыслу сбой. | Снимите. |
#Пошаговое решение
- Обновите списки пакетовВ Ubuntu/Debian откройте терминал Ctrl+Alt+T и запустите
sudo apt update. При запросе введите пароль администратора и дождитесь завершения. Если появилосьNO_PUBKEY,Release fileилиTemporary failure resolving, исправьте соответствующий источник/сеть, прежде чем решать зависимости. Если списки обновились, выполнитеapt-mark showholdи предварительную симуляциюsudo apt-get -s -f install; не подтверждайте операции с удалением нужных пакетов до анализа. - Исправьте сломанные зависимостиСначала запустите
sudo apt -s --fix-broken install: это пробный расчёт, без установки. Прочитайте список удаления и установки, убедитесь, что нет важных системных пакетов. Только при понятном и безопасном плане выполнитеsudo apt --fix-broken install; если результат предлагает удалить ядро или рабочую среду, остановитесь. - Завершите прерванные установкиВ терминале Ubuntu/Debian выполните
apt-mark showhold. Если список не пуст, изучите названия и причину фиксации. Снять конкретную фиксацию может администратор командойsudo apt-mark unhold ИМЯ_ПАКЕТАпосле подстановки фактического имени; это не стоит делать автоматически для ядра, драйвера или корпоративного ПО. После изменения проверьте план установкиsudo apt-get -s -f installи остановитесь, если предлагается удалить важные программы. - Снимите фиксацию с пакетовСначала выполните
apt-mark showholdи разберите, почему каждый пакет был зафиксирован. Если фиксация мешает обновлению и её действительно можно снять, администратор выполняетsudo apt-mark unhold ИМЯ_ПАКЕТАс фактическим именем из списка. Затем проверьтеsudo apt-get -s -f install, прежде чем устанавливать зависимости. Не снимайте все фиксации без анализа: это может нарушить совместимость драйверов и приложений. - Отключите несовместимые PPAОткройте «Программы и обновления» → «Другое ПО», если это Ubuntu с графическим интерфейсом, либо просмотрите
/etc/apt/sources.list.d/в терминале. Найдите сторонний PPA, совпадающий с пакетом из сообщения apt, и временно отключите только этот источник; затем выполнитеsudo apt updateи посмотрите план исправления без выполненияsudo apt-get -s -f install. Не удаляйте все PPA наугад и не смешивайте выпуски Ubuntu.
#Стандартные команды
Выполните по порядку: sudo apt update, sudo apt --fix-broken install, sudo dpkg --configure -a, sudo apt full-upgrade. Затем повторите установку нужного пакета. Если apt жалуется на конкретный пакет, посмотрите зависимости: apt-cache policy пакет и apt-cache depends пакет.
#Зафиксированные пакеты и сторонние репозитории
Список зафиксированных пакетов: apt-mark showhold; снять фиксацию — sudo apt-mark unhold пакет. Проверьте сторонние источники в /etc/apt/sources.list.d/ и PPA: несовместимый PPA для другой версии Ubuntu — частая причина. Отключите его: sudo add-apt-repository --remove ppa:имя/ppa или выполните sudo ppa-purge ppa:имя/ppa, чтобы вернуть версии из основного репозитория.
#Если установка .deb файла не удаётся
Устанавливайте локальные пакеты через apt, он сам подтянет зависимости: sudo apt install ./пакет.deb. Для конфликта версий можно собрать список: sudo apt -f install покажет, что будет удалено. Читайте вывод внимательно, прежде чем подтверждать.
#Если сломан репозиторий
Проверьте, что /etc/apt/sources.list соответствует вашей версии дистрибутива (lsb_release -a). Для смены зеркала используйте «Программы и обновления → Загрузить с» или замените домен на archive.ubuntu.com. Проверьте свободное место df -h / и очистите кэш sudo apt clean. Для окончательного выхода из тупика используйте aptitude: sudo aptitude install пакет предлагает варианты разрешения конфликта.
full-upgrade недопустимы до проверки конкретного конфликта и подготовки отката.apt-mark showholdsudo apt-get -s -f installapt-cache policy