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

  • Через средство управления пакетами ОС (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 (optional), make, make install. Есть так же врапперы, которые объединяют все три (напр. autotools).
Configure - Prepare(setup) environment for building. 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 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.

Процесс в целом не сложный – ищем архив с исходным кодом и компилируем его в ручную. Может потребоваться много времени (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