Как собрать программу из исходников в Linux
- Кратко: сборка из исходников — это скачивание архива с кодом, распаковка, запуск конфигурации, компиляция и установка. Эти шаги выполняются через ./configure, make и sudo make install. Для успешной сборки чаще всего нужно установить пакеты разработки (-dev).
- Кому полезно: продвинутым пользователям, разработчикам и администраторам, когда в репозиториях нет нужной версии или есть патч, которого нет в пакете.
Быстрые ссылки
- Установка необходимых инструментов
- Получение исходного пакета
- Устранение зависимостей
- Компиляция и установка
- Отладка и снятие программы с системы

Ubuntu и другие дистрибутивы Linux имеют большие репозитории пакетов, которые избавляют от необходимости компилировать программное обеспечение вручную. Тем не менее иногда требуется собрать редко встречающуюся программу или более новую версию, которой ещё нет в пакетах.
Собирать программу из исходников не нужно быть программистом. Достаточно знать базовые команды и принципы. В этом руководстве — пошаговый процесс, советы по решению зависимостей, рекомендации по безопасности и варианты, когда лучше не компилировать.
Установка необходимых инструментов
В Ubuntu и близких дистрибутивах есть мета-пакет, который устанавливает компилятор и основные утилиты: build-essential. Он включает GCC, make и набор нужных библиотек для компиляции.
sudo apt-get install build-essential
После запуска подтвердите установку, введя Y и нажав Enter.

Совет: на других дистрибутивах пакет может называться иначе. В Fedora это group ‘Development Tools’ (dnf group install “Development Tools”), в Arch — base-devel.
Получение исходного пакета
Исходный код обычно поставляется в архивах .tar.gz или .tar.bz2. Скачать архив можно с сайта проекта, GitHub/GitLab или зеркала.
Пример: хотим собрать Pidgin. Найдите файл pidgin-x.y.z.tar.gz и сохраните его в удобной папке, например ~/src.

Распаковка архива:
tar -xzvf file.tar.gz
или
tar -xjvf file.tar.bz2
После распаковки появится директория с исходниками. Перейдите в неё:
cd name-of-package

Разрешение зависимостей
Стандартный рабочий цикл для программ, использующих классический автоконфиг/Makefile, выглядит так:
./configure
(Некоторые проекты используют другие системы сборки — Meson, CMake, Python setuptools, Autotools, SCons. Смотрите файлы README или INSTALL в каталоге исходников.)

./configure проверит систему на наличие необходимых библиотек и утилит. Если какого-то компонента не хватает, вы увидите сообщение об ошибке и имя требуемого компонента.
Важно: префикс ./ указывает shell запускать файл configure из текущей директории, а не искать одноимённую программу в системных каталогах.

Обычно ошибки говорят, какая именно библиотека или утилита нужна. В Ubuntu многие пакеты разработки имеют суффикс -dev, например libxml2-dev. Устанавливайте недостающие пакеты командой:
sudo apt-get install имя-пакета
Если пакет уже есть в репозитории в старой версии, можно попросить apt автоматически установить зависимости для сборки исходников этой версии:
sudo apt-get build-dep pidgin
Эта команда установит все зависимости, которые использует пакет pidgin в репозиториях.

Повторяйте процесс установки зависимостей и запуск ./configure, пока проверка не завершится успешно.
Компиляция и установка
Когда ./configure прошёл без ошибок, запускаем компиляцию:
make
Процесс может занять от нескольких секунд до десятков минут, в зависимости от размера проекта и мощности вашего компьютера. Вы увидите поток сообщений компилятора.

После успешной компиляции устанавливаем программу в систему:
sudo make install
По умолчанию многие проекты устанавливаются в /usr/local. Например, исполнительные файлы попадут в /usr/local/bin, что обычно уже в $PATH — программу можно запускать по её имени.

Чтобы удалить установленную программу (если разработчики предусмотрели такую цель), можно выполнить из директории исходников:
sudo make uninstall
Если uninstall не предусмотрен, придётся вручную удалять файлы по списку, который можно получить из Makefile или путём сравнения состояния файловой системы до и после установки.
Важные замечания
Важно: программы, установленные вручную через make install, не будут обновляться менеджером пакетов. Это создаёт риск пропуска обновлений безопасности. Используйте ручную установку только если действительно нужна новая версия или локальные изменения.
Важно: внимательно читайте README и INSTALL в исходниках — там могут быть специфические параметры ./configure, опции компиляции или предупреждения.
Альтернативные подходы (когда не стоит компилировать)
- Использование пакетов дистрибутива (apt, dnf, pacman) — проще, безопаснее и управляется системой.
- Snap, Flatpak, AppImage — позволяют получить новую версию без компиляции и с изолированной средой.
- Сборка через систему сборки пакета дистрибутива (deb, rpm) — даёт управляемый пакет, который можно установить/удалить через пакетный менеджер.
Когда компиляция оправдана: нужен патч, нестандартная опция или очень новая версия. Когда не стоит: для стандартных приложений, где важна поддержка безопасности и обновления.
Отладка ошибок компиляции — чеклист
- Прочитать вывод ./configure/make и искать первую ошибку — она чаще всего причина последующих сбоев.
- Проверить наличие пакетов -dev для библиотек, упомянутых в ошибках.
- Установить утилиты build-essential, pkg-config, autoconf, automake, libtool, meson, cmake по необходимости.
- Поискать имя ошибки в интернете вместе с названием дистрибутива (например, “undefined reference to pthread Ubuntu”) — часто есть готовые решения.
- Убедиться, что заголовочные файлы доступны — они обычно в /usr/include или /usr/include/название.
- Если проект использует pkg-config, проверить, что .pc-файлы установлены и переменная PKG_CONFIG_PATH настроена.
- Для проблем с правами — запуск make не требует sudo; sudo используйте только для make install.
Мини-методология: безопасная сборка в пользовательской среде
- Создайте рабочую директорию, например ~/src.
- Скачайте исходники и проверяйте подписи/sha256sum, если они доступны.
- Используйте отдельного пользователя или контейнер для тестовой установки при сомнениях.
- Сохраните копию Makefile или списка установленных файлов перед установкой.
- Тестируйте приложение локально до установки в системные папки.
Ролевые чек-листы
Для новичка:
- Установить build-essential.
- Скачать архив в ~/src.
- Распаковать и запустить ./configure.
- Установить предложенные зависимости.
- Выполнить make и sudo make install.
Для разработчика:
- Работать в git-клоне проекта.
- Устанавливать отладочные опции (например, ./configure –enable-debug).
- Использовать make -j$(nproc) для ускорения сборки.
- Подключать статический анализ и тесты (make test).
Для администратора:
- Собирать пакет .deb/.rpm вместо прямой установки.
- Проверять список файлов после установки.
- Планировать обновления и отслеживать уязвимости ручных установок.
Критерии приёмки
- ./configure завершился без ошибок.
- make завершился с кодом 0 и без «fatal» ошибок.
- Программа запускается и выполняет основные функции.
- При наличии тестов — все тесты проходят (make test или аналог).
- Список установленных файлов задокументирован.
Отмена установки: Runbook
- Перейдите в директорию с исходниками, откуда вы устанавливали.
- Выполните:
sudo make uninstall
- Если uninstall не предусмотрен:
- Просмотрите Makefile для целевых путей установки.
- Удалите файлы вручную (sudo rm /usr/local/bin/имя и т.д.).
- Проверьте зависимости и оставшиеся библиотеки.
- Если были установлены пакеты -dev специально для сборки и они не нужны — удалите их.
Когда сборка не сработает: примеры и обходы
- Проект использует недокументированные патчи против версии библиотеки — попробуйте собрать в контейнере с конкретной версией зависимости.
- Код рассчитан на устаревшую версию компилятора — используйте chroot или Docker с нужной версией GCC.
- Требуется закрытая библиотека — без неё сборка невозможна.
Безопасность и управление рисками
- Риски: пропуск обновлений безопасности, попадание опасного ПО из непроверенных исходников.
- Меры: проверяйте подписи/хэши, предпочитайте официальные зеркала, собирайте пакеты системы (deb/rpm) для централизации управления.
Дополнительно: полезные команды и подсказки
- make -jN — параллельная сборка, где N — число рабочих потоков (например $(nproc)).
- ./configure –prefix=/opt/имя — установить в нестандартный каталог.
- pkg-config –cflags –libs имя — узнать параметры компиляции для библиотеки.
- checkinstall — альтернатива sudo make install; создаёт пакет .deb/.rpm из установки.
Быстрый справочник по системам сборки
- Autotools (./configure && make): классический подход для многих C/C++ проектов.
- CMake (mkdir build && cd build && cmake .. && make): современный генератор файлов сборки.
- Meson (meson setup build && ninja -C build): быстрый и удобный, часто используется в GNOME.
- Python (python setup.py install или pip install .): для пакетов на Python используйте виртуальные среды.
Сравнение: прямая установка vs пакетная сборка
- Прямая установка (make install): быстро, но менее управляемо.
- Сборка пакета (.deb/.rpm): требует больше работы, но пакет можно удалить и обновлять через менеджер.
Таблица команд Linux (локализованное значение)
| | Команды Linux | | Файлы | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr | | | Процессы | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | | | Сеть | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld | |
ПРИМЕЧАНИЕ: этот список содержит команды, полезные при подготовке окружения для сборки и поддержке системы.
Словарь в одну строку
- ./configure — скрипт, проверяющий систему и генерирующий Makefile.
- make — запускает процесс сборки по Makefile.
- sudo make install — устанавливает скомпилированные файлы в системные каталоги.
- -dev — пакеты с заголовочными файлами и метаданными для компиляции.
Заключение
Сборка из исходников — полезный навык. Она даёт гибкость и контроль над версией и опциями сборки. Но она требует внимания к зависимостям и безопасности. Если нужна управляемость и корректные обновления, предпочтительнее собирать системные пакеты или использовать контейнеры/песочницы.
Короткая рекомендация: используйте пакетный менеджер по умолчанию. Компилируйте вручную только когда это оправдано. Документируйте свои шаги и храните архив исходников и список установленных файлов — это поможет поддерживать систему в будущем.
RELATED: Лучшие ноутбуки для разработчиков и энтузиастов Linux
Похожие материалы
Как освободить место на PS5 — подробный гид
Как ограничить расход данных в Windows 10
Отключить Burn Bar в Apple Fitness+
Как удалить историю на iPhone — полное руководство
Установка Microsoft 365 на несколько устройств