Как разрешать зависимости при компиляции программ на 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. Это займёт несколько минут:
sudo auto-apt updateПосле этого обновите базы данных auto-apt:
sudo auto-apt updatedb && sudo auto-apt update-localКогда базы готовы, запустите ./configure через auto-apt:
sudo auto-apt run ./configureAuto-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
Затем загрузите списки содержимого пакетов (может занять время):
sudo apt-file updateЧтобы найти пакет по имени файла, выполните:
apt-file search example.pcКоманда выдаст пакет(ы), где встречается указанный файл. Установите нужный пакет стандартно:
sudo apt-get install Вы также можете искать содержимое пакетов через сайт Ubuntu Package Search: используйте раздел «Search the contents of packages». Это даёт те же результаты, но без загрузки больших списков.

Apt-Get Build-Dep
Если в репозиториях Ubuntu уже есть пакет старой версии вашей программы, система знает, какие пакеты требуются для сборки этой версии. Команда apt-get build-dep установит зависимости, необходимые для сборки пакета из исходников.
sudo apt-get build-dep package
Если новая версия программы требует дополнительных зависимостей, их всё равно придётся устанавливать вручную.
Когда автоматические инструменты не помогут
- Пакеты ещё не попали в репозитории. Тогда придётся искать и устанавливать -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) и их опции для указания путей.
Методология быстрой диагностики (мини-план)
- Запустите ./configure или make и зафиксируйте первую ошибку.
- Если указан файл, выполните apt-file search <имя_файла>. Если apt-file не установлен — установите и обновите индексы.
- Если пакет доступен в репозиториях, установите его (обычно с суффиксом -dev).
- Если пакет известен как исходник в Ubuntu, попробуйте sudo apt-get build-dep package.
- При отсутствии пакета — собирайте и устанавливайте зависимость вручную в локальный префикс или используйте контейнер.
Справочник команд (cheat sheet)
| Задача | Команда |
|---|---|
| Установка auto-apt | sudo apt-get install auto-apt |
| Инициализация auto-apt | sudo auto-apt update && sudo auto-apt updatedb && sudo auto-apt update-local |
| Запуск ./configure через auto-apt | sudo auto-apt run ./configure |
| Установка apt-file | sudo apt-get install apt-file |
| Обновление индексов apt-file | sudo 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.
Важно: всегда проверяйте, какие пакеты вы устанавливаете, и предпочитайте изоляцию сборки, чтобы не изменить рабочую систему.
Похожие материалы
Flatpak в Ubuntu: как включить и подключить Flathub
Как выбрать несколько файлов на Mac — 4 способа
Как запланировать публикации в Instagram
Как увидеть, где встроили ваши видео и работать с YouTube Analytics
Как смотреть видео в VR: Oculus, Rift, Vive, Gear, Daydream