apt и dpkg Linux

apt: You have held broken packages / unmet dependencies

  • Обновлено
  • Чтение ≈ 4 минуты
  • Нужны права администратора

Краткий ответ

Ошибка «unmet dependencies / held broken packages» исправляется командами apt update, apt --fix-broken install, снятием фиксации пакетов (apt-mark unhold), отключением сторонних репозиториев и приведением системы к одной версии дистрибутива.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение

#Что означает ошибка

Сообщение
The following packages have unmet dependencies E: Unable to correct problems, you have held broken packages.

«The following packages have unmet dependencies» или «You have held broken packages» означает, что менеджер пакетов не может подобрать совместимые версии: нужная зависимость недоступна, зафиксирована (hold), конфликтует или поступает из стороннего репозитория другой версии дистрибутива. Опасно использовать --force: так можно сломать систему. Правильнее выяснить, какой пакет мешает.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Сторонний репозиторий конфликтуетPPA или репозиторий другой версии.Пакеты из PPA.Отключите.
Зафиксированные пакетыПакеты в hold.apt-mark showhold не пусто.Снимите.
Устаревший список пакетовНет обновления индекса.Ошибка 404 при установке.apt update.
Смешаны версии дистрибутиваРепозитории от разных релизов.Конфликты зависимостей.Приведите к одной.

#Пошаговое решение

  1. Обновите спискиВ Debian/Ubuntu откройте «Терминал» (обычно Ctrl+Alt+T) и выполните sudo apt update; для sudo введите пароль вашей учётной записи. Дождитесь окончания, проверьте, нет ли красных строк Err, NO_PUBKEY, ошибок сети или отсутствующих репозиториев. Пока обновление списков завершается с ошибками, не запускайте установку пакетов и full-upgrade: сперва устраните ошибку источника и сохраните полный вывод.
  2. Исправьте зависимостиВ Debian/Ubuntu выполните sudo apt update, затем apt-mark showhold и apt-cache policy ИМЯ_ПАКЕТА, подставив имя из реальной ошибки. Перед исправлением проверьте последствия командой sudo apt -s -f install (симуляция). Если она предлагает удалить среду рабочего стола, ядро или множество важных пакетов, остановитесь. Не запускайте вслепую --force или удаление пакетов.
  3. Проверьте зафиксированныеОткройте терминал (Ctrl+Alt+T), выполните apt-mark showhold и посмотрите, выводятся ли названия пакетов. Если список пуст, фиксаций нет — переходите к анализу версий и репозиториев. Если названия есть, выясните причину фиксации у администратора или по документации приложения; не снимайте её автоматически. Снимать осознанно можно только конкретный пакет через sudo apt-mark unhold ИМЯ_ПАКЕТА, предварительно подставив реальное имя из вывода и убедившись, что это не критичная зависимость.
  4. Проверьте репозиторииСначала запишите адрес и имя репозитория из сообщения об ошибке. В Debian/Ubuntu проверьте /etc/apt/sources.list и файлы /etc/apt/sources.list.d/, в Fedora — /etc/yum.repos.d/, в Arch/Manjaro — /etc/pacman.d/mirrorlist. Сверьте адрес с официальной документацией именно вашей версии Linux, сохраните копию файла конфигурации и меняйте только неисправную запись. Затем обновите метаданные соответствующим менеджером пакетов.
  5. Отключите сторонние PPAЕсли ошибка указывает именно на сторонний источник пакетов, сначала запишите его имя и сохраните копию конфигурации. В Ubuntu проверьте «Программы и обновления» → «Другое ПО» и снимите галочку лишь с конкретного источника либо отключите соответствующий файл .sources/.list после проверки. Затем sudo apt update и проверьте сообщения. Если пакет зависит от этого репозитория, его работа может измениться — не удаляйте пакет автоматически.
  6. Обновите системуСначала уточните дистрибутив и его текущую версию. Откройте штатный менеджер обновлений или используйте пакетный менеджер вашей системы; перед массовым обновлением на сервере сделайте резервную копию или снимок и проверьте совместимость.
  7. Посмотрите причинуОткройте терминал и запустите sudo apt-get -s -f install: ключ -s показывает план исправлений без выполнения. Прочитайте, какие пакеты будут установлены или удалены. Если apt предлагает удалить рабочий стол, ядро или другие важные программы, отмените операцию и сначала проверьте источники пакетов и их версии. Если план корректен, запустите уже без -s: sudo apt-get -f install. После завершения повторите исходную установку и запишите оставшиеся сообщения об ошибках.
  8. Очистите кэшЕсли apt сообщает о повреждённом архиве или нет места, сначала проверьте df -h / /var и свободное место. Для удаления только скачанных пакетов, которые можно получить повторно, выполните sudo apt-get clean. Эта команда не исправляет конфликты версий и не удаляет установленные программы. Затем запустите sudo apt update; если появились ошибки подписи или отсутствия Release, сначала исправьте репозиторий, не отключая проверку подписи.
  9. Команды для отдельных ситуацийВыберите только подходящий вариант. Это не одна последовательность: часть команд диагностирует проблему, а часть меняет настройки или данные.
    Выберите подходящий вариант — это не команды для последовательного выполнения
    Вариант 1Вводите в терминале по одной строке: список удерживаемых пакетов, безопасный пробный план исправления, свед…
    Linux · Терминал (Bash)КомандаНужен sudo
    Вводите в терминале по одной строке: список удерживаемых пакетов, безопасный пробный план исправления, сведения о версиях пакетов. full-upgrade, autoremove и реальный --fix-broken install не выполняются до проверки плана и резервной копии.
    apt-mark showhold
    sudo apt-get -s -f install
    apt-cache policy
    Вариант 2Команды с буквальным примерным именем пакета заменены диагностикой и безопасным просмотром плана apt.
    Linux · Терминал (Bash)КомандаНужен sudo
    Команды с буквальным примерным именем пакета заменены диагностикой и безопасным просмотром плана apt.
    apt-mark showhold
    sudo apt-get -s -f install

Если проблема возникает после смены версии дистрибутива, убедитесь, что все репозитории соответствуют новому кодовому имени (jammy, noble и т. д.). Устанавливайте .deb-пакеты через sudo apt install ./пакет.deb, а не dpkg -i: так зависимости подтянутся автоматически. Не используйте apt-get install -f --force-yes и не удаляйте критические пакеты вроде libc6 и systemd. Если пакет хочет удалить большую часть системы, отмените операцию. Справка — документация Ubuntu.

Чтобы увидеть, откуда пришёл конфликтующий пакет, используйте apt-cache policy имя: в таблице указаны источники и приоритеты версий. Для отката сторонней версии применяют sudo apt install пакет=версия или утилиту ppa-purge, которая возвращает пакеты к версиям дистрибутива. Прежде чем что-либо удалять, сохраните список установленных пакетов командой dpkg --get-selections > packages.txt.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.