Build from Source

This section describes how to compile OpenIO SDS from the official source downloaded from GitHub.

The build procedure is available for Ubuntu 18.04 (Bionic Beaver). Howerver, other distributions are currently supported as explained at Supported Linux Distributions.

Set the $SDS variable

Throughout this guide, the environment variable SDS will be used several times. You should ensure this variable is always defined. It should be set to the name of directory where you are building OpenIO SDS.

export SDS=$HOME/local

Configure Repository

We provide easy access to build and runtime dependency versions not available in common distributions.

# Ubuntu Bionic
echo "deb http://mirror.openio.io/pub/repo/openio/sds/20.04/Ubuntu/ bionic/" | sudo tee /etc/apt/sources.list.d/openio-sds.list
curl http://mirror.openio.io/pub/repo/openio/APT-GPG-KEY-OPENIO-0 | sudo apt-key add -
sudo apt -y update

Build Dependencies

Build tools

sudo apt -y install git cmake

Build dependencies

sudo apt -y install \
    flex bison \
    libcurl4-gnutls-dev \
    libglib2.0-dev \
    libapreq2-dev \
    libsqlite3-dev \
    libjson-c-dev \
    liblzo2-dev \
    libzmq3-dev \
    libattr1-dev \
    libzookeeper-mt-dev \
    asn1c \
    openio-gridinit \
    liberasurecode-dev \
    python-dev \
    python-pbr \
    python-setuptools \
    libleveldb-dev
sudo apt -y install golang-go
go get gopkg.in/ini.v1 gopkg.in/tylerb/graceful.v1 golang.org/x/sys/unix

Download Source Code

The official OpenIO SDS source code is available from Github.

git clone https://github.com/open-io/oio-sds.git -b 7.0.0

Build

Perform the build in a separate folder from sources.

mkdir build && cd build
cmake \
    -DCMAKE_INSTALL_PREFIX=${SDS} \
    -DLD_LIBDIR=lib \
    -DCMAKE_BUILD_TYPE=Debug \
    ../oio-sds
make

Install

make install
( cd ../oio-sds && python setup.py install --user --install-scripts=${SDS}/bin)

Binaries and scripts are installed in $SDS/bin. Libraries are installed in $SDS/lib. Note that for Python, output is in local user installation $HOME/.local/.

Sandbox Setup

Environment

Set a few environment variables so everything we built previously is correctly found and used.

echo "export PATH=${PATH}:$SDS/bin" >> $HOME/.bashrc
echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SDS/lib" >> $HOME/.bashrc
source $HOME/.bashrc

Runtime Dependencies

To run the sandbox, you need additional runtime dependencies:

External services:

  • Redis: advanced key-value store used by account services.
  • Beanstalkd: simple and fast work queue used by OpenIO to run background jobs.

Libraries:

  • Python dependencies: several services and tools in OpenIO are built with Python

    sudo apt install -y \
        apache2 \
        python-cliff \
        python-eventlet \
        python-gunicorn \
        python-redis \
        python-requests \
        python-werkzeug \
        python-xattr \
        python-yaml \
        python-zookeeper \
        redis-server \
        beanstalkd
    

We used to start redis from systemctl, but an instance will be started along with OpenIO SDS services.

Create Sandbox

oio-reset.sh -f etc/bootstrap-preset-MINIMAL.yml