Версия:

Сборка из исходных файлов

Сборка из исходных файлов

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

  1. Найдите средства и библиотеки, которые будут нужны для сборки и тестирования.

    Абсолютно необходимы следующие:

    • Программа для скачивания репозиториев исходного кода.
      Для всех платформ это будет git. Программа позволяет скачивать самый актуальный набор исходных файлов из репозитория Tarantool’а на GitHub.

    • Компилятор C/C++.
      Как правило, это gcc и g++ версии 4.6 или более новой. На Mac OS X это Clang версии 3.2+.

    • Программа для управления процессом сборки.
      Для всех платформ это будет CMake версии 2.8+.

    • библиотека ReadLine любой версии

    • библиотека ncurses любой версии

    • библиотека OpenSSL версии 1.0.1+

    • библиотека cURL версии 0.725+

    • библиотека LibYAML версии 0.1.4+

    • библиотека ICU последней версии

    • Python и его модули.
      Интерпретатор для Python не нужен для сборки самого Tarantool’а, если вы не планируете проводить тестирование из шага 5. Для всех платформ это будет python версии 2.7+ (но не 3.x). Необходимы следующие модули Python:

    Чтобы установить все необходимые зависимости, следуйте инструкциям для вашей ОС:

    • Если вы используете Debian/Ubuntu, выполните команду:

      $ apt install -y build-essential cmake coreutils sed \
             libreadline-dev libncurses5-dev libyaml-dev libssl-dev \
             libcurl4-openssl-dev libunwind-dev libicu-dev \
             python python-pip python-setuptools python-dev \
             python-msgpack python-yaml python-argparse python-six python-gevent
      
    • Если вы используете RHEL/CentOS/Fedora, выполните команду:

      $ yum install -y gcc gcc-c++ cmake coreutils sed \
             readline-devel ncurses-devel libyaml-devel openssl-devel \
             libcurl-devel libunwind-devel libicu-devel \
             python python-pip python-setuptools python-devel \
             python-msgpack python-yaml python-argparse python-six python-gevent
      
    • Если вы используете Mac OS X (команды для OS X El Capitan):

      Если вы пользуетесь Homebrew в качестве менеджера пакетов, выполните команду:

      $ brew install cmake autoconf binutils zlib \
              readline ncurses libyaml openssl curl libunwind-headers icu4c \
              && pip install python-daemon \
              msgpack-python pyyaml configargparse six gevent
      

      В противном случае, загрузите стандартный пакет Xcode для разработки:

      $ xcode-select --install
       $ xcode-select -switch /Applications/Xcode.app/Contents/Developer
      
    • Если вы используете FreeBSD (команды для FreeBSD 10.1), выполните команду:

      $ pkg install -y sudo git cmake gmake gcc coreutils \
             readline ncurses libyaml openssl curl libunwind icu \
             python27 py27-pip py27-setuptools py27-daemon \
             py27-msgpack-python py27-yaml py27-argparse py27-six py27-gevent
      

    Если некоторые модули Python недоступны в репозитории, лучше всего произвести настройку модулей, скачав пакет в формате TAR и выполнив установку с помощью python setup.py следующим образом:

    $ # На некоторых машинах может потребоваться такая начальная команда:
     $ wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
    
     $ # Модуль Python для анализа YAML (pyYAML) для набора тестов:
     $ # (Если wget не работает, проверьте на сайте http://pyyaml.org/wiki/PyYAML
     $ # актуальность версии.)
     $ cd ~
     $ wget http://pyyaml.org/download/pyyaml/PyYAML-3.10.tar.gz
     $ tar -xzf PyYAML-3.10.tar.gz
     $ cd PyYAML-3.10
     $ sudo python setup.py install
    

    Наконец, используйте pip в Python, чтобы импортировать пакеты Python, которые могут быть неактуальны в репозиториях дистрибутивов. (В CentOS 7 будет необходимо сначала установить pip так: sudo yum install epel-release, а затем sudo yum install python-pip.)

    $ pip install -r \
           https://raw.githubusercontent.com/tarantool/test-run/master/requirements.txt \
           --user
    

    Это действие следует выполнить только один раз при первой загрузке.

  2. Use git to download the latest Tarantool source code from the GitHub repository tarantool/tarantool, branch 1.10, to a local directory named ~/tarantool, for example:

    $ git clone --recursive https://github.com/tarantool/tarantool.git -b 1.10 ~/tarantool
    

    В редких случаях вложенные модули необходимо снова обновить с помощью команды:

    $ git submodule update --init --recursive
    
  3. Используйте CMake, чтобы начать сборку.

    $ cd ~/tarantool
     $ make clean         # необязательно, добавлено на удачу
     $ rm CMakeCache.txt  # необязательно, добавлено на удачу
     $ cmake .            # начать с типом сборки = Debug (отладка)
    

    На некоторых платформах может потребоваться указать версии C и C++, например:

    $ CC=gcc-4.8 CXX=g++-4.8 cmake .
    

    Чтобы указать тип сборки в CMake используется опция -DCMAKE_BUILD_TYPE=type, где type может быть:

    • Debug – отладка, используется эксплуатационным персоналом на проекте
    • Release – релиз, используется только при необходимости высокой производительности
    • RelWithDebInfo – используется для сборки в эксплуатации, также предоставляет возможности отладки

    Чтобы указать в CMake, что результат будет распределен, используется опция -DENABLE_DIST=ON. При наличии такой опции make install в дальнейшем установит файлы tarantoolctl в дополнение к файлам tarantool.

  4. Используйте make для завершения сборки.

    $ make
    

    Примечание

    В FreeBSD используйте вместо этого gmake.

    При этом создается исполняемый файл „tarantool“ в директории src/.

    Далее настоятельно рекомендуется выполнить команду make install для установки Tarantool’а в директорию /usr/local и поддержания порядка в системе. Однако, можно запустить исполняемый файл и без установки.

  5. Проведите тестирование.

    Это необязательное действие. Разработчики Tarantool’а всегда проводят тестирование до публикации новых версий. Следует проводить тестирование, если внесены изменения в код. Итак, после загрузки в ~/tarantool основные действия:

    $ # создание поддиректории под названием `bin`
     $ mkdir ~/tarantool/bin
    
     $ # привязка Python к bin (могут потребовать права пользователя superuser)
     $ ln /usr/bin/python ~/tarantool/bin/python
    
     $ # переход в поддиректорию с тестами
     $ cd ~/tarantool/test
    
     $ # проведение тестирования с помощью Python
     $ PATH=~/tarantool/bin:$PATH ./test-run.py
    

    Вывод должен включать в себя обнадеживающие результаты, например:

    ======================================================================
     TEST                                            RESULT
     ------------------------------------------------------------
     box/bad_trigger.test.py                         [ pass ]
     box/call.test.py                                [ pass ]
     box/iproto.test.py                              [ pass ]
     box/xlog.test.py                                [ pass ]
     box/admin.test.lua                              [ pass ]
     box/auth_access.test.lua                        [ pass ]
     ... etc.
    

    Во избежание путаницы очистите поддиректорию bin:

    $ rm ~/tarantool/bin/python
     $ rmdir ~/tarantool/bin
    
  6. Создайте пакеты RPM и Debian.

    Это необязательное действие, которое следует выполнить только тем, кто хочет перераспределить Tarantool. Мы настоятельно рекомендуем использовать официальные пакеты с сайта tarantool.org. Однако, можно собрать пакеты RPM и Debian с помощью PackPack или путем использования средств dpkg-buildpackage или rpmbuild. Для получения более подробной информации обратитесь к документации по dpkg или rpmbuild.

  7. Проверьте установку Tarantool’а.

    $ # если tarantool установлен локально после сборки
     $ tarantool
     $ # - ИЛИ -
     $ # если tarantool не установлен локально после сборки
     $ ./src/tarantool
    

    Tarantool запустится в интерактивном режиме.

См. также: