Методы установки приложений, компиляция приложений

  • Через средство управления пакетами ОС (Ubuntu: apt-get, CentOS: yum, Gentoo: emerge). Пакет чаще всего имеет не последнюю версия приложения/компилятора (ruby, phantomjs), но она почти гарантированно stable и легко ставится.
Для установки приложений в среде операционной системы GNU/Linux лучше всего пользоваться средствами управления пакетами вашего дистрибутива.
Например, в Ubuntu Linux для установки клиента и сервера MySQL достаточно выполнить в терминале команду:
sudo apt-get install mysql-client mysql-server
В Fedora/RHEL
yum install mysql mysql-server
  • Через готовый бинарный файл приложения для вашей версии ОС/ядра ОС. Тут мы зачастую получаем последнюю версию, но с запуском/установкой возможны проблемы из-за разных зависимостей.
Если же вы по каким-то причинам не хотите устанавливать MySQL средствами дистрибутива, можно воспользоваться готовыми бинарными пакетами для Linux, доступными на странице http://dev.mysql.com/downloads/mysql/
  • Через исходник собираем/компилируем используя утилиты configure (логи обычно пишуться в config.log), make, make install. Есть так же врапперы, которые объединяют все три (напр. autotools).
    • Желательно (не более чем рекомендация) собирать тут: /usr/src

(Опция) скрипт ./install_prereq install - установка зависимостей отдельным скриптом, есть далеко не во всех пакетах (есть например в asterisk, но и там нет автоподключения нужных репозиториев для библиотек для установки для rocky linux, при этом на debian это подключение не потребовалось), называется по разному, может иметь разные опции

Скрипт ./configure
- Prepare(setup) environment for building ((подготовка к компилированию - проверка необходимых для компилирования зависимостей (компилятора/библиотек/утилит, включая make), подготовка make файла с параметрами системы для компиляции)).
This script has lots of options that you should change. Like --prefix or --with-dir=/foo. That means every system has a different configuration. Also ./configure checks for missing libraries that should be installed. Anything wrong here causes not to build your application. configure may fail if it finds that dependencies are missing.
Утилита make - Building the system ((компилирование на основе подготовленного make файла, возможно для ускорения в несколько потоков с опцией -j/—jobs))
This is actually make all by default. And every make has different actions to do. Some do building, some do tests after building, some do checkout from external SCM repositories. Usually you don't have to give any parameters, but again some packages execute them differently.

Утилита make с флагом install - Install to the system ((переносит бинарные файлы и файлы конфигураций в системные директории)) This installs the package in the place specified with configure. If you want you can specify ./configure to point to your home directory. However, lots of configure options are pointing to /usr or /usr/local. That means then you have to use actually sudo make installbecause only root can copy files to /usr and /usr/local.

Here one can use autotools, that means ./configure, make and make install.


(Опция) Утилита make с флагами отличными от install - иногда позволяют создать примеры файл конфигураций (make samples) или предложить развернуть типовые сценарии деплоя (make basic-pbx) или развернуть документацию (make progdocs) очистить систему от промежуточных файлов/настроек (make clean , make mrproper), к примеру asterisk:

Процесс в целом не сложный – ищем архив с исходным кодом и компилируем его в ручную. Может потребоваться много времени (30 минут это норма) и сил (dependency hell) для установки. Так же сборка может требовать большое количество ОП и прерываться oom kill если в системе недостаточно памяти.

Там же можно найти и архив с исходным кодом MySQL для самостоятельной компиляции СУБД. Но такой подход к инсталляции пакетов популярного и общедоступного (присутствующего в репозиториях многочисленных Linux-дистрибутивов) программного обеспечения строго не рекомендуется.
'build' finished successfully (35m45.129s)

[1739/1907] Compiling ../src/core.cpp
gcc: fatal error: Killed signal terminated program cc1
compilation terminated.

[ 3478.001521] Out of memory: Kill process 6092 (cc1) score 429 or sacrifice child
[ 3478.001557] Killed process 6092 (cc1) total-vm:1901712kB, anon-rss:279800kB, file-rss:0kB, shmem-rss:0kB

Пример сборки Python3.7 из исходника на Debian 9. Причем сборка с кучей самотестов и анализом load avg.

running build_scripts
creating build/scripts-3.7
Run tests sequentially

0:00:00 load avg: 1.53 [  1/416] test_grammar
0:00:00 load avg: 1.53 [  2/416] test_opcodes
0:00:00 load avg: 1.53 [  3/416] test_dict
0:00:00 load avg: 1.53 [  4/416] test_builtin
0:00:01 load avg: 1.53 [  5/416] test_exceptions

Пример сборки netmap (подробнее о нем и других примерах ниже в отдельных статьях).

https://github.com/luigirizzo/netmap
cd netmap-master
chmod -R 777 *
./configure
# alternate actual Intel X710 Drivers
./configure --select-version=i40e:2.17.4
make
sudo make install

Пример ручной сборки ntttcp.

sudo apt-get update
sudo apt install git
sudo apt install gcc
git clone https://github.com/Microsoft/ntttcp-for-linux cd ntttcp-for-linux/src
make && make install

Пример сборки TRex.

# TREX 
mkdir -p /opt/trex cd /opt/trex
#LATEST-VER
git clone https://github.com/cisco-system-traffic-generator/trex-core.git #SPECIFIC-VER
git clone https://github.com/cisco-system-traffic-generator/trex-core.git -b v2.89 cd trex-core/linux_dpdk/
./b configure
./b build

Пример сборки hex инструментов

git clone https://github.com/ZerBea/hcxdumptool.git
cd hcxdumptool
make
sudo make install

git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install

Owamp

$ git clone https://github.com/perfsonar/owamp.git
$ cd owamp/
$ git submodule update --init
$ apt install automake
$ ./bootstrap
$ ./configure --prefix=/usr/local
$ make ## no errors here
$ make install

 

Leave a Reply