Linux dep-missСредняя

Ошибка 'dependency missing' в Linux: как исправить отсутствие зависимостей

Статья объясняет, что означает ошибка 'dependency missing' в Linux, какие пакетные менеджеры использовать для её исправления, и как предотвратить повторение проблемы в будущем.

Обновлено 8 апреля 2026 г.
5-10 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 10+CentOS 7+Fedora 35+Arch Linux

Что означает ошибка "dependency missing"

Ошибка "dependency missing" (отсутствует зависимость) — это сообщение от пакетного менеджера или загрузчика динамических библиотек (например, ld.so), которое указывает, что для корректной работы программы или установки пакета не хватает необходимых компонентов — библиотек (.so файлы в Linux), других пакетов или модулей.

Типичные сценарии появления:

  • При попытке запуска программы: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory.
  • При установке пакета через apt, yum, dnf или pacman: unmet dependencies или dependency ... is not installable.
  • При компиляции программ из исходного кода: configure: error: libxyz not found.

Эта ошибка блокирует выполнение или установку ПО и требует вмешательства администратора.

Причины возникновения

  1. Неполная установка. Пакет был установлен без его зависимостей (например, принудительно через dpkg -i без предварительного apt-get -f install).
  2. Устаревшие репозитории. Вы используете дистрибутив или репозиторий, в котором нужная версия библиотеки отсутствует.
  3. Конфликт версий. Установлена более новая или, наоборот, устаревшая версия библиотеки, несовместимая с требуемой.
  4. Программа из стороннего источника. Вы скачали бинарный файл (.deb, .rpm) или архив, собранный для другой версии ОС или другого дистрибутива.
  5. Ручная компиляция без make install. Исходники скомпилированы, но библиотеки установлены в /usr/local/lib, а система их не ищет.
  6. Повреждённый кэш пакетного менеджера. Локальные метаданные о пакетах устарели или повреждены.

Способ 1: Установка недостающего пакета через менеджер пакетов (рекомендуемый)

Это основной и самый правильный способ. Вы находите пакет, предоставляющий нужную библиотеку, и устанавливаете его официальным пакетным менеджером.

  1. Определите имя недостающей библиотеки. Из текста ошибки извлеките имя. Например, для libssl.so.1.1 искомое имя — libssl1.1 (или openssl в некоторых дистрибутивах).
  2. Найдите пакет, владеющий этой библиотекой.
    • Debian/Ubuntu: apt-file search libssl.so.1.1 (предварительно установите apt-file и выполните apt-file update). Или проще: apt search libssl.
    • CentOS/RHEL/Fedora: yum provides */libssl.so.1.1 или dnf provides libssl.so.1.1.
    • Arch Linux: pacman -F libssl.so.1.1 (требуется включить базу данных community).
  3. Установите найденный пакет. Например, для Ubuntu:
    sudo apt update
    sudo apt install libssl1.1
    
    Для CentOS 7:
    sudo yum install openssl-libs
    
  4. Повторите исходное действие (установку или запуск программы). Зависимость должна быть удовлетворена.

Способ 2: Ручное добавление пути к библиотекам (временное решение)

Если библиотека установлена, но находится в нестандартном месте (например, в /opt/lib), система её не видит.

  1. Найдите библиотеку: sudo find / -name "libssl.so.1.1" 2>/dev/null.
  2. Временно добавьте путь в переменную окружения LD_LIBRARY_PATH перед запуском программы:
    export LD_LIBRARY_PATH=/путь/к/библиотеке:$LD_LIBRARY_PATH
    ./ваша_программа
    
  3. Для постоянного решения добавьте путь в файл /etc/ld.so.conf.d/custom.conf и выполните sudo ldconfig.

Способ 3: Использование универсальных форматов пакетов (Snap, Flatpak)

Если проблема возникает из-за несовместимости системных библиотек, запустите приложение в контейнере.

  1. Установите Snap или Flatpak (если ещё нет):
    # Для Ubuntu/Debian (Snap обычно уже есть)
    sudo apt install snapd
    # Для Fedora (Flatpak)
    sudo dnf install flatpak
    
  2. Найдите и установите приложение в нужном формате. Например, для Discord:
    sudo snap install discord
    # или
    flatpak install flathub com.discordapp.Discord
    
    Такие приложения содержат все зависимости внутри себя и не зависят от версий системных библиотек.

Способ 4: Пересборка ПО из исходников с правильными флагами

Если вы компилируете программу самостоятельно, убедитесь, что система знает, где искать заголовочные файлы и библиотеки.

  1. Установите пакеты разработки (-dev или -devel). Например, для OpenSSL:
    • Ubuntu/Debian: sudo apt install libssl-dev
    • CentOS/RHEL: sudo yum install openssl-devel
  2. При запуске ./configure укажите пути, если библиотеки установлены нестандартно:
    ./configure --with-ssl-libs=/путь/к/библиотекам --prefix=/usr/local
    
  3. Выполните make && sudo make install.

Профилактика

  • Всегда используйте официальные репозитории и пакетный менеджер для установки ПО. Избегайте dpkg -i/rpm -i без предварительного разрешения зависимостей.
  • Обновляйте систему регулярно: sudo apt update && sudo apt upgrade или sudo dnf upgrade. Это обеспечивает совместимость версий библиотек.
  • Проверяйте совместимость сторонних пакетов (.deb, .rpm) с вашей версией дистрибутива.
  • Для разработчиков: используйте виртуальные окружения (venv, virtualenv, conda) или контейнеры (Docker) для изоляции зависимостей проекта от системных.
  • При ручной компиляции внимательно читайте вывод ./configure или cmake. Он обычно явно указывает на недостающие компоненты.

💡 Совет: Если вы часто сталкиваетесь с этой ошибкой на определённом дистрибутиве, проверьте, не используете ли вы устаревшую версию ОС. Рассмотрите возможность обновления до последнего стабильного релиза.

Часто задаваемые вопросы

Что такое 'dependency missing' в Linux?
Как узнать, какой пакет отсутствует?
Почему возникает эта ошибка, если я установил все пакеты?
Можно ли отключить проверку зависимостей?

Полезное

Определите недостающий пакет
Поиск пакета в репозиториях
Установите найденный пакет
Переустановите проблемный пакет
Используйте инструменты автоматического разрешения