Компиляция исходного кода
100%

Пакеты · Урок 7

Компиляция исходного кода

Узнайте, как проверять, настраивать, собирать, тестировать, размещать и отслеживать программы, скомпилированные из исходного кода.

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

Проверка и чтение до сборки

Получите исходный код из аутентифицированного канала выпусков исходного проекта. Проверьте его подпись или контрольную сумму через доверенный путь, затем исследуйте архив до извлечения в непривилегированный промежуточный каталог. Прочитайте файлы README, INSTALL, SECURITY и документацию проекта по сборке.

Инструкции сборки являются исполняемым кодом. Скрипт configure, определение сборки, тест или плагин компилятора способны запускать произвольные команды от имени вашего пользователя. Не собирайте недоверенный исходный код и не запускайте саму сборку через sudo.

Почему этап компиляции обычно следует выполнять без sudo?

Установка требований сборки

В системе разработки семейства Debian распространённой отправной точкой служит:

$ sudo apt install build-essential

Команда устанавливает базовый компилятор и инструменты сборки, но не все зависимости любого проекта. Проектам также могут понадобиться среды выполнения языков, генераторы, инструменты систем сборки, заголовки разработки или точные версии библиотек. Устанавливайте требования из доверенных репозиториев и отличайте зависимости сборки от зависимостей времени выполнения.

Что предоставляет build-essential в системе семейства Debian?

Настройка и сборка

Традиционный проект в стиле Autoconf использует:

$ ./configure --prefix=/usr/local
$ make

configure проверяет среду и создаёт файлы сборки согласно выбранным параметрам. make читает правила зависимостей и команд, обычно из Makefile, и создаёт запрошенные цели.

Эта последовательность не универсальна. Проекты могут использовать CMake, Meson, Ninja, инструменты конкретного языка или собственные скрипты. Следуйте документации точного выпуска, а не запускайте ./configure лишь по привычке. Если система сборки поддерживает это, отдельный каталог сборки помогает отделить созданные файлы.

Что делает make в традиционном процессе?

Тестирование до установки

Запустите документированную тестовую цель проекта, например:

$ make check

Настоящая цель может называться test, check или быть отдельной командой. Исследуйте сбои, а не устанавливайте непроверенный результат. Тестам могут потребоваться сеть, службы, специальное оборудование или изоляция; проверяйте их до выполнения так же, как другой код сборки.

Что делать, если документированный набор тестов завершается с ошибкой?

Промежуточное размещение и отслеживание установки

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

Предпочитайте один из контролируемых подходов:

  • создайте официальный собственный пакет инструментами дистрибутива
  • устанавливайте в явно отделённый префикс, например /usr/local, если это разрешает политика
  • разместите файлы в промежуточном корне упаковки через поддерживаемый механизм вроде DESTDIR
  • используйте непривилегированный пользовательский префикс, изолированное окружение или контейнер, когда это уместно

checkinstall может создать простой пакет для некоторых процессов make install, но он не универсален и не заменяет проверенный рецепт пакета качества дистрибутива. Никогда не считайте его обязательным правилом. До любого привилегированного копирования проверьте промежуточный список файлов, владельцев, права, пути и план удаления или обновления.

Каково назначение поддерживаемой промежуточной установки через DESTDIR?

Урок завершён

Вы завершили Компиляция исходного кода

Теперь вы можете рассматривать сборку из исходного кода как контролируемый процесс поставки программ.

  • Аутентифицируйте исходный код и проверяйте его инструкции как исполняемый код.

  • Устанавливайте явные требования сборки из доверенных репозиториев.

  • Настраивайте, собирайте и тестируйте без ненужных привилегий.

  • Размещайте и проверяйте результат до системной установки.

  • Отслеживайте установленные файлы собственным пакетом или намеренно изолированным префиксом.

Сохраните прогресс

Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.

Создать бесплатный аккаунт
Назад к Пакеты