- Через средство управления пакетами ОС (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 actuallysudo make install
because only root can copy files to /usr and /usr/local.
Here one can use autotools, that means./configure
,make
andmake install
.
(Опция) Утилита make с флагами отличными от install - иногда позволяют создать примеры файл конфигураций или предложить развернуть типовые сценарии деплоя или очистить систему от промежуточных настроек (make clean , make mrproper), к примеру asterisk make samples , make basic-pbx:
Процесс в целом не сложный – ищем архив с исходным кодом и компилируем его в ручную. Может потребоваться много времени (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