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

Как собрать и установить пакет из исходников в Linux

6 min read Linux Обновлено 15 Apr 2026
Сборка и установка пакета из исходников в Linux
Сборка и установка пакета из исходников в Linux

Человек собирает и устанавливает программное обеспечение в Linux

В этом руководстве подробно объяснено, как собрать и установить программный пакет из исходного кода в Linux. Показан рабочий процесс на примере Git, но принципы применимы к большинству проектов с автоконфигурируемой или CMake/meson-сборкой.

Почему стоит собирать из исходников

  • Полный контроль над опциями сборки и флагами компилятора.
  • Возможность исправления багов и добавления функций.
  • Обучение: чтение кода и практики архитектуры других проектов.
  • Создание пакетов для специфичных дистрибутивов или версий библиотек.

Важно: сборка из исходников требует времени и понимания зависимостей. Для повседневных установок удобнее использовать менеджер пакетов вашей системы.

Что нужно заранее установить

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

На Debian/Ubuntu и производных:

sudo apt update
sudo apt install build-essential curl gettext cmake gcc g++ libcurl4-gnutls-dev libexpat1-dev libssl-dev zlib1g-dev

На Arch Linux:

sudo pacman -Syu
sudo pacman -S base-devel curl cmake

На Fedora/RHEL:

sudo dnf install @development-tools curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc cmake

Совет: для пакетов, доступных в репозитории, можно сначала запустить apt build-dep <пакет>, чтобы установить все зависимости сборки.

Шаг 1. Скачивание исходников

Скачайте архив с сайта проекта или зеркала. В примере используем Git 2.26.2 и curl. Рабочая папка — ~/Downloads.

cd ~/Downloads
curl --output git.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz

Распакуйте архив:

tar -zxf git.tar.gz
cd git-2.26.2

Откройте файлы README и INSTALL — там часто описаны специфичные флаги сборки.

Шаг 2. Подготовка и проверка зависимостей

Большинство проектов используют один из трёх подходов:

  • Автоконфигурация: скрипт ./configure
  • CMake: создание отдельной сборочной директории и запуск cmake
  • Meson: создание сборочной директории и запуск meson

Запустите соответствующий инструмент. Для автоконфигурации:

./configure

Если скрипт выдаёт ошибку о недостающей библиотеке, установите соответствующий dev-пакет и повторите.

Совет по автоматике: используйте make -j$(nproc) для параллельной сборки и ускорения на многоядерных CPU.

make -j$(nproc)

Дополнительно полезно:

  • ccache для ускорения повторных сборок
  • strace или ldd для диагностики динамических зависимостей

Шаг 3. Опции установки: PREFIX и DESTDIR

По умолчанию make install копирует файлы в системные пути, что потребует sudo. Чтобы устанавливать в нестандартную директорию, используйте PREFIX или DESTDIR.

Установка в /usr/local по PREFIX:

./configure --prefix=/usr/local
make -j$(nproc)
sudo make install

Подготовка пакетной установки без изменения корневой FS с DESTDIR:

make -j$(nproc)
make DESTDIR=$PWD/pkg install
# Теперь в каталоге pkg/ лежит макет устанавливаемых файлов: pkg/usr/local/bin/...

DESTDIR удобно использовать для создания собственных пакетов (.deb/.rpm) или для тестовой установки.

Шаг 4. Безопасная установка и создание пакета

Вместо прямого sudo make install рекомендуется собирать пакет для вашего дистро:

  • Для Debian-подобных систем: dpkg-buildpackage или checkinstall
  • Для RPM: rpmbuild

Пример быстрой упаковки с checkinstall (создаёт .deb/.rpm и устанавливает пакет через менеджер пакетов):

sudo apt install checkinstall  # если доступно
sudo checkinstall --pkgname=git --pkgversion=2.26.2 --backup=no --deldoc=yes --fstrans=yes --install=yes

Преимущество: пакет можно легко удалить через apt/dpkg, метаданные сохраняются.

Важно: checkinstall подходит для быстрых случаев, но для релизной упаковки лучше настроить полноценные debian/ rpm-спецификации.

Шаг 5. Проверка и откат

Проверка установки:

git --version
which git
ldd $(which git)  # показывает динамические библиотеки, используемые бинарником

Откат установки:

  • Если установили через пакет (.deb/.rpm), удалите пакет через менеджер: sudo apt remove
  • Если использовали sudo make install без пакета, часто в исходниках есть make uninstall. Запустите в каталоге исходников:
sudo make uninstall

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

Общие ошибки и как их исправить

  • Ошибка: missing headers / cannot find -l

    • Решение: установите dev-пакет библиотеки (например libssl-dev, zlib1g-dev).
  • Ошибка: permission denied при install

    • Решение: используйте sudo для установки в системные директории или примените DESTDIR/PREFIX.
  • Несовместимые версии библиотек в системе

    • Решение: собирайте с указанием статической линковки (если проект поддерживает) или используйте контейнер/chroot с нужными версиями.
  • Сборка слишком медленная

    • Решение: make -j$(nproc), используйте ccache, удалите ненужные шаги тестов в конфигурации.

Когда сборка из исходников не подходит

  • Вам нужна простая, безопасная и системно управляемая установка — используйте репозиторные пакеты.
  • Приложение сильно интегрировано с менеджером пакетов дистрибутива (службы, зависимости) — сборка вручную усложнит обновление.
  • Не хватает времени на поддержку и патчи — пакеты из репозиториев обновляются автоматически.

Альтернативные способы установки

  • Менеджеры пакетов: apt, dnf, pacman.
  • AUR/PKGBUILD и yay на Arch: удобный путь к кастомным сборкам.
  • Snap, Flatpak, AppImage — контейнеризированные приложения без конфликтов зависимостей.
  • Контейнеры Docker/Podman — изоляция и воспроизводимость окружения.

Безопасность сборки и жёсткие флаги компиляции

При сборке из исходников обратите внимание на флаги компилятора и опции безопасности:

  • Используйте оптимизацию и защиту: -O2 -fstack-protector-strong -D_FORTIFY_SOURCE=2
  • Для релизов включайте PIE и RELRO: -fPIE -fPIC -Wl,-z,relro,-z,now
  • Проверяйте доверенность исходного кода и используйте GPG-подписи для архива, если они доступны.

Ролями: чеклисты для разработчика и системного администратора

Чеклист разработчика:

  • Склонировать/скачать правильную версию исходников
  • Прочитать README/INSTALL
  • Установить dev-зависимости
  • Собрать локально с make -j
  • Запустить тесты проекта (make test, ctest)
  • Провести статический анализ и собрать с отладкой

Чеклист системного администратора:

  • Оценить влияние на систему и зависимости
  • Подготовить тестовую виртуальную машину/контейнер
  • Собрать пакет (.deb/.rpm) вместо прямой установки
  • Проверить файл manifest и права
  • Создать резервную копию или снимок системы
  • Установить пакетом и проверить сервисы

Мини-методология сборки в 7 шагов

  1. Подготовьте окружение и установите build-essential.
  2. Скачайте и распакуйте исходники.
  3. Прочитайте документацию проекта.
  4. Настройте опции сборки (PREFIX, флаги).
  5. Соберите проект make -j$(nproc) или cmake && make.
  6. Упакуйте результат в .deb/.rpm или используйте checkinstall.
  7. Установите и протестируйте, затем задокументируйте изменения.

Шаблоны команд и часто используемые блоки

CMake сборка в отдельной директории:

mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

Создание тестовой установки с DESTDIR:

make
make DESTDIR=$PWD/package install
# Просмотреть содержимое package/

Создание простого .deb через dpkg-deb после DESTDIR:

# подготовить package/DEBIAN/control с метаданными
fakeroot dpkg-deb --build package mypackage.deb
sudo dpkg -i mypackage.deb

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

  • Команда git –version возвращает ожидаемую версию.
  • Бинарный файл находится в ожидаемом пути (which git).
  • Системные сервисы работают как до установки (если применимо).
  • Для пакетов: пакет можно удалить без следов через менеджер пакетов.

Отладка и инструкция по реагированию при ошибке

  1. Повторите сборку с логированием: make V=1 или cmake –log-level.
  2. Проверьте зависимости: ldd бинарника, pkg-config –libs.
  3. Если установка сломала систему, восстановите из снимка или удалите пакет через менеджер.
  4. Для критических случаев: вернитесь к пакетам репозитория: sudo apt install –reinstall git
flowchart TD
  A[Скачать исходники] --> B{Тип сборки}
  B --> |autoconf| C[./configure]
  B --> |cmake| D[mkdir build && cmake ..]
  C --> E[make -j]
  D --> E
  E --> F{Упаковать?}
  F --> |да| G[checkinstall / dpkg-buildpackage / rpmbuild]
  F --> |нет| H[sudo make install]
  G --> I[Установить пакет]
  H --> I
  I --> J[Проверка git --version]
  J --> K[Готово]

Короткий глоссарий

  • configure — скрипт подготовки сборки, проверяет зависимости.
  • make — утилита, выполняющая сборку по правилам Makefile.
  • PREFIX — префикс установки, например /usr или /usr/local.
  • DESTDIR — временная корневая директория при установке для упаковки.
  • checkinstall — утилита для быстрой генерации пакетов из make install.

Советы по совместимости и миграции

  • Если вы собираете старую версию на новом дистро, учитывайте версии glibc и системных библиотек.
  • Для переносимости используйте контейнеры с нужным дистроем или chroot.
  • Документируйте флаги компиляции и зависимости, чтобы можно было воспроизвести сборку в будущем.

Итоговая сводка

Сборка из исходников даёт гибкость и контроль, но требует аккуратности: следите за зависимостями, используйте PREFIX/DESTDIR, предпочитайте создание пакетов для простого отката и автоматического управления. Начните в тестовой среде, используйте параллельную сборку и инструменты упаковки, чтобы оставить систему управляемой.

Компиляция ПО в Linux с помощью команды make

Вывод версии Git в терминале Linux

Важно: перед массовой установкой на производстве протестируйте процесс на тестовой машине и подготовьте план отката.

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

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

Подготовка к техническому собеседованию разработчика
Карьера

Подготовка к техническому собеседованию разработчика

Запуск мастера устранения неполадок в Windows
Windows

Запуск мастера устранения неполадок в Windows

Как создать мем: полное руководство
Социальные сети

Как создать мем: полное руководство

Как устранить BSOD 0x0000003B в Windows
Windows

Как устранить BSOD 0x0000003B в Windows

Clone Stamp в Photoshop — подробное руководство
Графика

Clone Stamp в Photoshop — подробное руководство

Синхронизация звука и видео в After Effects
Видео монтаж

Синхронизация звука и видео в After Effects