Добро пожаловать снова, начинающие энтузиасты Linux!
В нашем путешествии по экосистеме Linux мы часто сталкиваемся с ситуациями, когда нужное нам программное обеспечение недоступно в стандартных менеджерах пакетов, таких как apt или yum. Или, возможно, нам нужна новейшая версия с функциями, которых ещё нет в репозиториях. В таких случаях умение компилировать и устанавливать программное обеспечение из исходного кода становится бесценным навыком в вашем арсенале Linux.
Make — это инструмент автоматизации сборки, который собирает исполняемые программы и библиотеки из исходного кода, считывая файлы Makefile. Эти файлы определяют, как извлечь целевую программу из её зависимостей. Освоив этот процесс, вы сможете свободно устанавливать любое программное обеспечение с открытым исходным кодом в свою систему Linux.
Некоторые из ключевых особенностей команды make включают в себя:
Давайте скачаем и скомпилируем пакет из исходного кода!
Прежде чем компилировать любое программное обеспечение, необходимо убедиться, что в системе есть необходимые инструменты. Процесс компиляции требует набора инструментов разработки, включая компиляторы, компоновщики и утилиты сборки.
В системах на базе Debian, таких как Kali, вы можете установить эти инструменты с помощью:
kali > sudo apt-get install build-essential
Эти пакеты включают компиляторы gcc/g++ и библиотеки, необходимые для компиляции программного обеспечения из исходного кода. Без этих инструментов вы не сможете продолжить компиляцию.
После установки инструментов разработки вам необходимо проверить наличие зависимостей у скомпилированного вами программного обеспечения. При использовании менеджеров пакетов зависимости обрабатываются автоматически, но при компиляции из исходного кода необходимо убедиться, что все необходимые библиотеки доступны в вашей системе.
В нашем примере мы скомпилируем curl — консольный инструмент для передачи данных по URL. Хотя в большинстве систем curl предустановлен, самостоятельная компиляция продемонстрирует процесс, применимый к большинству программных пакетов.
Давайте загрузим исходный код curl:
kali > wget -O curl.tar.gz https://curl.se/download/curl-8.13.0.tar.gz
Эта команда загружает исходный код curl и сохраняет его как curl.tar.gz в текущем каталоге.
Далее нам необходимо извлечь содержимое этого файла:
kali > tar -xvzf curl.tar.gz
Команда tar с этими параметрами (-xvzf) извлекает (-x) содержимое архива с подробным (-v) отображением извлекаемых файлов из сжатого программой gzip (-z) файла (-f).
После распаковки у вас появится новый каталог с исходным кодом. Перейдём в него:
kali > cd curl-8.13.0
Внутри этого каталога вы найдете множество файлов и подкаталогов, содержащих исходный код и инструкции по сборке для curl.
Перед компиляцией необходимо настроить среду сборки. Это делается с помощью скрипта конфигурации, который предназначен для обеспечения работы программ на самых разных компьютерных системах.
Скрипт конфигурации проверяет вашу систему на наличие необходимых зависимостей, настраивает среду сборки и создаёт Makefile, адаптированный под вашу систему. Это критически важный шаг, гарантирующий корректную компиляцию программного обеспечения в вашем дистрибутиве Linux.
Давайте запустим скрипт настройки:
кали > ./configure
Эта команда запускает скрипт конфигурации в текущем каталоге. Скрипт выполнит множество проверок вашей системы, найдёт необходимые библиотеки и инструменты и соответствующим образом настроит среду сборки.
Как видите, мы получили ошибку SSL. Можно выбрать любой вариант из списка, я буду использовать OpenSSL:
кали> ./configure –with-openssl
Скрипт конфигурации, по сути, сопоставляет библиотеки, необходимые программе, с установленными в вашей системе. Благодаря этому компилятор знает, где искать библиотеки, необходимые curl. После этого он генерирует файл Makefile со всей необходимой информацией для процесса компиляции.
Во время этого процесса вы можете увидеть ошибку об отсутствующей библиотеке, для продолжения вам просто нужно установить ее через apt и повторить скрипт.
Скрипт конфигурации часто принимает различные параметры, позволяющие настроить сборку. Например, вы можете установить программное обеспечение в другом месте или включить/отключить определённые функции (как мы сделали с SSL). Обычно эти параметры можно увидеть, выполнив:
кали > ./configure –help
Теперь, когда мы настроили среду сборки и сгенерировали Makefile, мы можем скомпилировать исходный код с помощью команды make:
кали > сделать
Команда make считывает инструкции из Makefile и выполняет команды, необходимые для компиляции программы. Этот процесс может занять от нескольких секунд до нескольких часов, в зависимости от размера и сложности программы.
Во время компиляции вы увидите множество выходных данных, поскольку компилятор обрабатывает каждый исходный файл. Не беспокойтесь, если вы не понимаете весь этот вывод — он в первую очередь полезен для отладки, если что-то пойдёт не так.
Команда make невероятно мощна, поскольку она пересобирает только то, что необходимо. Если вы внесёте изменения в исходный код и снова запустите make, она перекомпилирует только изменившиеся файлы, что значительно экономит время разработки.
После успешной компиляции программного обеспечения последний шаг — его установка в систему. Это делается с помощью команды make install, которую обычно необходимо выполнить с правами root:
кали > sudo make install
Эта команда копирует скомпилированные двоичные файлы, библиотеки и документацию в соответствующие расположения в вашей системе, указанные в Makefile. Расположение для установки обычно определяется на этапе настройки.
После установки программа должна запуститься. Для curl вы можете проверить установку, проверив её версию:
kali > curl -V
Должна отобразиться версия curl, которую вы только что скомпилировали и установили, а также информация о поддерживаемых функциях и протоколах.
Помните, что менеджеры пакетов обеспечивают удобство, но умение компилировать из исходного кода даёт вам гибкость и контроль, недоступные менеджерам пакетов. Это важный навык для любого серьёзного пользователя Linux, администратора или хакера.
В нашем путешествии по экосистеме Linux мы часто сталкиваемся с ситуациями, когда нужное нам программное обеспечение недоступно в стандартных менеджерах пакетов, таких как apt или yum. Или, возможно, нам нужна новейшая версия с функциями, которых ещё нет в репозиториях. В таких случаях умение компилировать и устанавливать программное обеспечение из исходного кода становится бесценным навыком в вашем арсенале Linux.
Make — это инструмент автоматизации сборки, который собирает исполняемые программы и библиотеки из исходного кода, считывая файлы Makefile. Эти файлы определяют, как извлечь целевую программу из её зависимостей. Освоив этот процесс, вы сможете свободно устанавливать любое программное обеспечение с открытым исходным кодом в свою систему Linux.
Некоторые из ключевых особенностей команды make включают в себя:
- Отслеживание зависимостей : Make перестраивает только то, что необходимо перестроить, экономя время во время компиляции.
- Параллельное выполнение : современные версии могут компилировать несколько исходных файлов одновременно, используя многоядерные процессоры.
- Кроссплатформенность : утилита make работает практически во всех Unix-подобных операционных системах, что позволяет переносить ваши навыки.
- Настройка : процесс компиляции можно настроить в соответствии с вашими конкретными потребностями и конфигурацией системы.
Давайте скачаем и скомпилируем пакет из исходного кода!
Шаг №1. Подготовка системы к компиляции
Прежде чем компилировать любое программное обеспечение, необходимо убедиться, что в системе есть необходимые инструменты. Процесс компиляции требует набора инструментов разработки, включая компиляторы, компоновщики и утилиты сборки.
В системах на базе Debian, таких как Kali, вы можете установить эти инструменты с помощью:
kali > sudo apt-get install build-essential
Эти пакеты включают компиляторы gcc/g++ и библиотеки, необходимые для компиляции программного обеспечения из исходного кода. Без этих инструментов вы не сможете продолжить компиляцию.
После установки инструментов разработки вам необходимо проверить наличие зависимостей у скомпилированного вами программного обеспечения. При использовании менеджеров пакетов зависимости обрабатываются автоматически, но при компиляции из исходного кода необходимо убедиться, что все необходимые библиотеки доступны в вашей системе.
В нашем примере мы скомпилируем curl — консольный инструмент для передачи данных по URL. Хотя в большинстве систем curl предустановлен, самостоятельная компиляция продемонстрирует процесс, применимый к большинству программных пакетов.
Шаг №2. Загрузка и извлечение исходного кода
Давайте загрузим исходный код curl:
kali > wget -O curl.tar.gz https://curl.se/download/curl-8.13.0.tar.gz
Эта команда загружает исходный код curl и сохраняет его как curl.tar.gz в текущем каталоге.
Далее нам необходимо извлечь содержимое этого файла:
kali > tar -xvzf curl.tar.gz
Команда tar с этими параметрами (-xvzf) извлекает (-x) содержимое архива с подробным (-v) отображением извлекаемых файлов из сжатого программой gzip (-z) файла (-f).
После распаковки у вас появится новый каталог с исходным кодом. Перейдём в него:
kali > cd curl-8.13.0
Внутри этого каталога вы найдете множество файлов и подкаталогов, содержащих исходный код и инструкции по сборке для curl.
Шаг №3. Настройка среды сборки
Перед компиляцией необходимо настроить среду сборки. Это делается с помощью скрипта конфигурации, который предназначен для обеспечения работы программ на самых разных компьютерных системах.
Скрипт конфигурации проверяет вашу систему на наличие необходимых зависимостей, настраивает среду сборки и создаёт Makefile, адаптированный под вашу систему. Это критически важный шаг, гарантирующий корректную компиляцию программного обеспечения в вашем дистрибутиве Linux.
Давайте запустим скрипт настройки:
кали > ./configure
Эта команда запускает скрипт конфигурации в текущем каталоге. Скрипт выполнит множество проверок вашей системы, найдёт необходимые библиотеки и инструменты и соответствующим образом настроит среду сборки.
Как видите, мы получили ошибку SSL. Можно выбрать любой вариант из списка, я буду использовать OpenSSL:
кали> ./configure –with-openssl
Скрипт конфигурации, по сути, сопоставляет библиотеки, необходимые программе, с установленными в вашей системе. Благодаря этому компилятор знает, где искать библиотеки, необходимые curl. После этого он генерирует файл Makefile со всей необходимой информацией для процесса компиляции.
Во время этого процесса вы можете увидеть ошибку об отсутствующей библиотеке, для продолжения вам просто нужно установить ее через apt и повторить скрипт.
Скрипт конфигурации часто принимает различные параметры, позволяющие настроить сборку. Например, вы можете установить программное обеспечение в другом месте или включить/отключить определённые функции (как мы сделали с SSL). Обычно эти параметры можно увидеть, выполнив:
кали > ./configure –help
Шаг №4. Компиляция исходного кода с помощью Make
Теперь, когда мы настроили среду сборки и сгенерировали Makefile, мы можем скомпилировать исходный код с помощью команды make:
кали > сделать
Команда make считывает инструкции из Makefile и выполняет команды, необходимые для компиляции программы. Этот процесс может занять от нескольких секунд до нескольких часов, в зависимости от размера и сложности программы.
Во время компиляции вы увидите множество выходных данных, поскольку компилятор обрабатывает каждый исходный файл. Не беспокойтесь, если вы не понимаете весь этот вывод — он в первую очередь полезен для отладки, если что-то пойдёт не так.
Команда make невероятно мощна, поскольку она пересобирает только то, что необходимо. Если вы внесёте изменения в исходный код и снова запустите make, она перекомпилирует только изменившиеся файлы, что значительно экономит время разработки.
Шаг №5. Установка скомпилированного программного обеспечения
После успешной компиляции программного обеспечения последний шаг — его установка в систему. Это делается с помощью команды make install, которую обычно необходимо выполнить с правами root:
кали > sudo make install
Эта команда копирует скомпилированные двоичные файлы, библиотеки и документацию в соответствующие расположения в вашей системе, указанные в Makefile. Расположение для установки обычно определяется на этапе настройки.
После установки программа должна запуститься. Для curl вы можете проверить установку, проверив её версию:
kali > curl -V
Должна отобразиться версия curl, которую вы только что скомпилировали и установили, а также информация о поддерживаемых функциях и протоколах.
Краткое содержание
Помните, что менеджеры пакетов обеспечивают удобство, но умение компилировать из исходного кода даёт вам гибкость и контроль, недоступные менеджерам пакетов. Это важный навык для любого серьёзного пользователя Linux, администратора или хакера.