#Что означает ошибка
held broken packages
Пакеты в hold блокируют разрешение зависимостей. Проверьте apt-mark showhold и снимите блокировку.
#Причины и признаки
| Возможная причина | Как узнать | Что делать |
|---|---|---|
| Пакет зафиксирован | В случае «APT: You have held broken packages — зафиксированные пакеты мешают установке» проверьте наличие причины «Пакет зафиксирован» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Выполните apt-mark showhold и проверьте, связан ли один из зафиксированных пакетов с ошибкой; снимайте hold только после проверки зависимости. |
| Смешанные репозитории | В случае «APT: You have held broken packages — зафиксированные пакеты мешают установке» проверьте наличие причины «Смешанные репозитории» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Проверьте apt-cache policy ИМЯ_ПАКЕТА и источники APT: пакеты из разных выпусков Debian/Ubuntu часто несовместимы; отключайте только ошибочный источник. |
| Устаревшие зависимости | Сопоставьте версию установленного компонента с требованиями «APT» и моментом, когда впервые появилась проблема. | Выполните sudo apt -s -f install и внимательно изучите предлагаемые удаления. Не подтверждайте операцию, если затрагивается ядро или рабочий стол. |
| Сторонний пакет | В случае «APT: You have held broken packages — зафиксированные пакеты мешают установке» проверьте наличие причины «Сторонний пакет» по исходному действию и связанному сообщению; переходить к исправлению стоит после её подтверждения. | Сначала выясните происхождение стороннего пакета и его совместимость с вашим выпуском ОС, затем выберите поддерживаемую версию вместо насильного удаления. |
#Пошаговое решение
- Покажите зафиксированные пакеты и пробный планОткройте терминал Debian/Ubuntu, выполните
apt-mark showhold, а затемsudo apt -s -f install. Второй вызов только рассчитывает изменения. Запишите имена конфликтующих пакетов и предлагаемые удаления. Если APT предлагает удалить ядро, рабочий стол, сеть или базу данных — не запускайте фактическую установку. - Устраните только подтверждённый конфликтДля конфликтующего пакета запустите
apt-cache policy ИМЯ_ПАКЕТА, подставив настоящее имя из ошибки. Сравните источники и версии; не смешивайте выпуски Debian/Ubuntu. Если пакет сознательно удерживается командой apt-mark hold, сначала выясните почему и только после согласования изменяйте удержание. Повторите пробную установку и убедитесь, что неожиданных удалений больше нет. - Проверьте дополнительную причину по результатам диагностикиЕсли
apt-mark showholdперечисляет пакеты, посмотрите, относится ли хоть один к конфликтующей зависимости. Для конкретного имени (не вводите слово «пакет» буквально) выполнитеapt-cache policy ИМЯ_ПАКЕТА: сравните установленную и доступную версии и происхождение. Если запрета нет, причиной могут быть смешанные выпуски, PPA или неподходящая архитектура; сначала найдите источник черезgrep -R "^[^#].*deb " /etc/apt/sources.list /etc/apt/sources.list.d/(в новых выпусках также учитывайте.sources). Не снимайте hold с системных пакетов автоматически. - Убедитесь в исправлении исходной ошибкиПосле исправления только подтверждённого конфликта выполните
sudo apt -s install ИМЯ_ПАКЕТА, заменив имя на нужный пакет. Это пробный расчёт: проверьте разделы «The following packages will be REMOVED/installed». При неожиданном удалении ядра, графической среды или сетевых служб не продолжайте. Если план корректен, выполните ту же установку без-sи проверьтеdpkg -s ИМЯ_ПАКЕТАи повторную команду, вызвавшую ошибку.
#Если проблема осталась
Если «APT: You have held broken packages — зафиксированные пакеты мешают установке» повторяется, сохраните время, состояние подключения и точный текст ошибки. Не меняйте сразу несколько настроек — иначе станет трудно понять, какое действие повлияло на результат.