Ошибка apt unmet dependencies и held broken packages: что делать
Пакету нужны другие пакеты, а apt не может их поставить. Если apt предлагает apt --fix-broken install — выполните её. Если нет — обновите список пакетов и проверьте удержанные пакеты и сторонние репозитории.
Содержание 11
Что сделать прямо сейчас
- Если в выводе есть
apt --fix-broken install, выполнитеsudo apt --fix-broken installбез имён пакетов — шаг 1. - Обновите список пакетов и систему:
sudo apt update, затемsudo apt upgrade— шаг 2. - Проверьте, не удержаны ли пакеты:
apt-mark showhold— шаг 3. - Если пакет из стороннего репозитория, проверьте, что он для вашей версии Ubuntu — шаг 4.
Все команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
Что значит это сообщение
Каждому пакету нужны другие пакеты — зависимости. Ошибка значит, что apt не может поставить их так, чтобы всё сошлось. Она бывает двух видов.
Первый вид — при установке нового пакета:
The following packages have unmet dependencies:
example-app : Depends: libexample1 (>= 2.0) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.Выше могут быть строки Some packages could not be installed… и The following information may help to resolve the situation:. В строке с двоеточием сказано, какому пакету (example-app) что нужно (libexample1 версии 2.0 или новее) и что не так. Вместо but it is not going to be installed может стоять:
| Окончание строки | Что значит |
|---|---|
| but it is not going to be installed | apt не может поставить нужный пакет |
| but it is not installable | Нужного пакета нет ни в одном подключённом репозитории |
| but 1.5-1 is to be installed | apt поставит версию 1.5-1, а нужна другая |
| but 1.5-1 is installed | Стоит версия 1.5-1, а нужна другая |
Слова held broken packages не значат, что вы что-то сломали: apt пишет их каждый раз, когда не нашёл, как согласовать зависимости.
Второй вид — когда прошлая установка уже оставила систему с недостающими зависимостями:
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
example-app : Depends: libexample1 but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).Здесь apt сам подсказывает решение — команду apt --fix-broken install.
Причины:
- прервалась прошлая установка — тогда apt может сначала написать dpkg was interrupted;
- пакет поставили из файла .deb, а зависимости не поставились;
- список пакетов устарел, и apt ищет версии, которых уже нет;
- пакет удержан командой
apt-mark holdи не обновляется; - пакет из стороннего репозитория собран для другой версии Ubuntu.
Шаг 1. Если apt предлагает apt --fix-broken install
sudo apt --fix-broken installИмена пакетов не пишите. apt сам найдёт, чего не хватает, покажет список и спросит Do you want to continue? [Y/n]. Прочитайте список: в нём могут быть пакеты, которые apt собирается удалить (The following packages will be REMOVED). Если среди них нужные вам программы — веб-сервер, база данных, — ответьте n и переходите к шагу 2. Если всё в порядке, нажмите Y и Enter.
После этого повторите установку, которая не прошла.
Шаг 2. Обновите список пакетов и систему
sudo apt updatesudo apt upgradeНовому пакету могут быть нужны свежие версии библиотек. После обновления системы повторите установку.
Шаг 3. Проверьте удержанные пакеты
apt-mark showholdКоманда выводит пакеты, которые удержаны: apt не обновляет их и не меняет. Если удержанный пакет есть в строке с ошибкой, снимите удержание:
sudo apt-mark unhold libexample1Вместо libexample1 — имя из списка. Если пакет удерживали специально — например, чтобы не обновлялась база данных, — сначала узнайте, кто и зачем это сделал.
Шаг 4. Проверьте сторонние репозитории
Посмотрите, откуда apt берёт нужный пакет:
apt-cache policy libexample1В Version table указаны версии и адреса репозиториев. Если пакет ставится из стороннего репозитория — не с archive.ubuntu.com, security.ubuntu.com или зеркала провайдера, — проверьте, что этот репозиторий выпущен для вашей версии Ubuntu. Файлы сторонних репозиториев лежат в каталоге /etc/apt/sources.list.d/. Если репозиторий для другой версии, удалите его файл, выполните sudo apt update и поставьте программу по инструкции разработчика для вашей версии.
Чего не делать
- Не ставьте пакеты в обход apt командами
dpkgс параметрами--force: зависимости останутся несогласованными, и ошибки появятся при следующих обновлениях. - Не отвечайте Y, не прочитав список удаляемых пакетов.
Как проверить
Выполните sudo apt --fix-broken install. Если зависимости в порядке, apt напишет, что ничего ставить и удалять не нужно (0 upgraded, 0 newly installed, 0 to remove). Затем повторите установку своего пакета.
Похожие ошибки
| Сообщение | Чем отличается |
|---|---|
| dpkg was interrupted | Прошлая установка не закончена — сначала доделайте её |
| has no installation candidate | Не находится сам пакет, а не его зависимости |
Тексты сообщений на этой странице сверены с исходным кодом apt 2.7.14 — эта версия стоит в Ubuntu 24.04. В других версиях Ubuntu слова могут немного отличаться.
Источники
- Исходный код apt 2.7.14: private-output.cc — строка The following packages have unmet dependencies и её окончания.
- Исходный код apt 2.7.14: private-install.cc — подсказка apt --fix-broken install и вопрос Do you want to continue?
- Исходный код apt 2.7.14: algorithms.cc — текст you have held broken packages.
- man apt-get — параметр -f, --fix-broken.
- man apt-mark — hold, unhold и showhold.
- Ubuntu Server: сторонние репозитории — где лежат файлы сторонних репозиториев.
Сверено 9 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 09.10.2026