Гид по технологиям

Как разрешать зависимости при компиляции программ на Ubuntu

5 min read Linux Обновлено 26 Dec 2025
Разрешение зависимостей при компиляции на Ubuntu
Разрешение зависимостей при компиляции на Ubuntu

Иллюстрация: разрешение зависимостей при компиляции на Ubuntu

Быстрые ссылки

  • Auto-Apt
  • Apt-File
  • Apt-Get Build-Dep

Компиляция из исходников требует двух вещей: исходных файлов программы и всех библиотек/заголовков, от которых она зависит. Ubuntu и производные (Debian, Linux Mint) используют пакеты .deb и систему apt, которая может помочь обнаружить и установить эти зависимости автоматически.

Если вы только начинаете, сначала прочитайте базовый гайд по сборке из исходников: там описаны ./configure, make и make install.

Auto-Apt

Auto-apt следит за вызовами сборочной утилиты (обычно ./configure). Если процесс пытается открыть файл, которого нет, auto-apt приостанавливает выполнение, устанавливает пакет, содержащий этот файл, и возобновляет процесс. Это удобно при первом проходе ./configure, когда отсутствуют разработческие пакеты.

Установите auto-apt:

sudo apt-get install auto-apt

Пример использования auto-apt в терминале

Затем скачайте списки файлов, необходимых auto-apt. Это займёт несколько минут:

sudo auto-apt update

После этого обновите базы данных auto-apt:

sudo auto-apt updatedb && sudo auto-apt update-local

Когда базы готовы, запустите ./configure через auto-apt:

sudo auto-apt run ./configure

Auto-apt упростит установку нужных пакетов при первом прогоне. Важно: auto-apt не всегда находит нестандартные или новые библиотеки, и он ориентирован на Debian/Ubuntu-репозитории.

Важно: auto-apt требует прав администратора, так как устанавливает пакеты в систему.

Apt-File

Если ./configure или компилятор выдают сообщение о том, что отсутствует конкретный файл (например example.pc, header.h или .so), не всегда очевидно, к какому пакету он относится. apt-file позволяет искать, в каком пакете находится нужный файл.

Установите apt-file:

sudo apt-get install apt-file

Пример apt-file в терминале

Затем загрузите списки содержимого пакетов (может занять время):

sudo apt-file update

Чтобы найти пакет по имени файла, выполните:

apt-file search example.pc

Команда выдаст пакет(ы), где встречается указанный файл. Установите нужный пакет стандартно:

sudo apt-get install 

Вы также можете искать содержимое пакетов через сайт Ubuntu Package Search: используйте раздел «Search the contents of packages». Это даёт те же результаты, но без загрузки больших списков.

Поиск содержимого пакетов на сайте Ubuntu Package Search

Apt-Get Build-Dep

Если в репозиториях Ubuntu уже есть пакет старой версии вашей программы, система знает, какие пакеты требуются для сборки этой версии. Команда apt-get build-dep установит зависимости, необходимые для сборки пакета из исходников.

sudo apt-get build-dep package

apt-get build-dep установка зависимостей

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

Когда автоматические инструменты не помогут

  • Пакеты ещё не попали в репозитории. Тогда придётся искать и устанавливать -dev пакеты вручную или компилировать зависимости самому.
  • Программа использует нестандартные пути для библиотек. Проверьте переменные окружения PKG_CONFIG_PATH и LD_LIBRARY_PATH.
  • Утилита ./configure ищет .pc-файлы для pkg-config. Если их нет, ищите пакеты с именем lib*-dev или pkg-config-файлы.

Советы по диагностике:

  • Читайте первые ошибки компилятора — они указывают, какого файла не хватает.
  • Для заголовков ищите пакеты с суффиксом -dev (например libssl-dev).
  • Для pkg-config ищите файлы .pc и используйте apt-file.

Альтернативные подходы

  • Используйте контейнеры Docker или chroot со свежей минимальной системой для повторяемой сборки.
  • Собирайте зависимости локально в prefix (./configure –prefix=$HOME/.local) чтобы не менять систему.
  • Для сложных проектов используйте инструменты сборки (meson, cmake) и их опции для указания путей.

Методология быстрой диагностики (мини-план)

  1. Запустите ./configure или make и зафиксируйте первую ошибку.
  2. Если указан файл, выполните apt-file search <имя_файла>. Если apt-file не установлен — установите и обновите индексы.
  3. Если пакет доступен в репозиториях, установите его (обычно с суффиксом -dev).
  4. Если пакет известен как исходник в Ubuntu, попробуйте sudo apt-get build-dep package.
  5. При отсутствии пакета — собирайте и устанавливайте зависимость вручную в локальный префикс или используйте контейнер.

Справочник команд (cheat sheet)

ЗадачаКоманда
Установка auto-aptsudo apt-get install auto-apt
Инициализация auto-aptsudo auto-apt update && sudo auto-apt updatedb && sudo auto-apt update-local
Запуск ./configure через auto-aptsudo auto-apt run ./configure
Установка apt-filesudo apt-get install apt-file
Обновление индексов apt-filesudo apt-file update
Поиск пакета по файлуapt-file search <имя_файла>
Установка зависимостей пакетаsudo apt-get build-dep

Роль‑направленные чеклисты

Разработчик:

  • Проверить README и файл INSTALL в исходниках.
  • Запустить ./configure и записать первую ошибку.
  • Использовать apt-file для поиска отсутствующих файлов.
  • Попробовать build-dep, если пакет есть в репозитории.

Системный администратор:

  • Обновить индексы apt и apt-file.
  • Установить необходимые -dev пакеты в систему или в отдельный chroot/container.
  • Ограничить установку в тестовой среде, прежде чем менять production.

Безопасность и приватность

  • Устанавливайте только пакеты из доверенных репозиториев. При ручной сборке зависимости проверяйте подписи и исходники.
  • Для изоляции сборки используйте контейнеры или chroot, чтобы не изменять системную среду.
  • Не запускайте незнакомые сборочные скрипты с правами root без проверки.

Совместимость и миграция

Все приведённые команды работают в Ubuntu, Debian и производных (Linux Mint), которые используют apt и .deb-пакеты. На дистрибутивах с другим менеджером пакетов (dnf, pacman, zypper) используются аналогичные инструменты, но с другой командной синтаксисом.

Факто-бокс

  • auto-apt — удобен для интерактивного перехвата ./configure.
  • apt-file — ищет файлы внутри пакетов репозиториев.
  • apt-get build-dep — ставит зависимости для уже упакованного пакета.

Примеры типичных ошибок и решения

  • Ошибка: cannot find -lfoo

    • Решение: найдите пакет libfoo-dev или libfoo0-dev и установите его.
  • Ошибка: foo.h: No such file or directory

    • Решение: ищите пакет с заголовками, обычно с суффиксом -dev.
  • Ошибка: Package foo was not found in the pkg-config search path

    • Решение: apt-file search foo.pc, затем установить соответствующий пакет.

Критерии приёмки

  • Конфигурация ./configure завершается без ошибок.
  • make проходит успешно и тесты (если есть) не падают.
  • Приложение запускается и выполняет базовые сценарии.

Короткое резюме

Auto-apt, apt-file и apt-get build-dep значительно упрощают установку зависимостей на Ubuntu. Начинайте с автоматических инструментов, затем переходите к ручному поиску и локальной сборке, если пакет не доступен в репозитории. Для безопасной и повторяемой сборки используйте контейнеры или chroot.

Важно: всегда проверяйте, какие пакеты вы устанавливаете, и предпочитайте изоляцию сборки, чтобы не изменить рабочую систему.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Flatpak в Ubuntu: как включить и подключить Flathub
Linux

Flatpak в Ubuntu: как включить и подключить Flathub

Как выбрать несколько файлов на Mac — 4 способа
macOS

Как выбрать несколько файлов на Mac — 4 способа

Как запланировать публикации в Instagram
Социальные сети

Как запланировать публикации в Instagram

Как увидеть, где встроили ваши видео и работать с YouTube Analytics
YouTube

Как увидеть, где встроили ваши видео и работать с YouTube Analytics

Как смотреть видео в VR: Oculus, Rift, Vive, Gear, Daydream
VR

Как смотреть видео в VR: Oculus, Rift, Vive, Gear, Daydream

Как сохранить изображения из Google Images
Инструкции

Как сохранить изображения из Google Images