Home

Awesome

Mesos packaging

Mesos is a cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks. See Mesos website for more details.

NOTE: if you build Mesos on system with e.g. libcurl4-nss-dev it will be hardlinked to this implementation library. On Debian libcurl-dev is the virtual package for:

GCC compatibility

Mesos version \ GCCgcc 4.4gcc 4.6gcc 4.7gcc 4.8gcc 4.9
0.20
0.21
0.22

Mesos is compiled with C++11 support.

Mesos configuration

Mesos arguments could be specified by creating files structure in /etc/mesos-slave or in /etc/mesos-master.

For specifing e.g. --isolation=cgroups you would create

  /etc
    /mesos-slave
      isolation       # with contents 'cgroups'

In similar manner you can restrict hardware resources used by mesos-slave:

  /etc
    /mesos-slave
      /resources
        cpu          # with contents e.g. '5'

Building package

Build deb package for Debian/Ubuntu with following:

./build_mesos --repo https://git-wip-us.apache.org/repos/asf/mesos.git?ref=0.15.0 --version 0.15.0

or supply just ref to tag in the (default) repo:

./build_mesos --ref 0.22.1 --build-version p1

If you want to activate GPU support (Mesos >= 0.29.0), you'll need to first have a local copy of bleeding edge of Mesos (as there is no rev yet). You'll also have installed the nVidia GDK as instructed in the nVidia Guide

./build_mesos --src-dir=/path/to/mesos --enable-gpu

Then don't forget to look at the nVidia doc to run Mesos Agent with the proper tags

Debian Wheezy

Default gcc on Wheezy is 4.7 which isn't compatible with Mesos >= 0.21. A workaround is using gcc 4.6 which could be used along with 4.7:

apt-get install gcc-4.6 g++-4.6

just specify cxx and cc flags:

./build_mesos --ref 0.21.1-rc2 --build-version 1 --cxx "g++-4.6" --cc "gcc-4.6"

Compiled gcc from source

See gcc instructions.

export LD_LIBRARY_PATH="/root/gcc-4.8.4/lib64"
export LD_RUN_PATH="/root/gcc-4.8.4/lib64"
export PATH="/root/gcc-4.8.4/bin:$PATH"

Requirements

Debian Jessie

Debian Wheezy

```
$ sudo apt-get install ruby1.9.1 ruby1.9.1-dev build-essential
$ gem install fpm
$ sudo apt-get install build-essential python-dev autoconf automake git make libssl-dev libtool libsasl2-dev
```

Ubuntu Xenial on Power + GPU (ppc64le) (should also work on Trusty on Power)

sudo apt-get update -qq
sudo apt-get install -y --force-yes \
  tar \
  wget \
  tree \
  autoconf \
  automake \
  git \
  make \
  gcc \
  libcurl4-nss-dev \
  libsasl2-dev \
  libsasl2-modules \
  libssl-dev \
  libapr1-dev \
  libsvn-dev \
  libffi-dev \
  openjdk-8-jdk \
  maven \
  autoconf libtool \
  build-essential \
  python-setuptools \
  python-dev \
  python-boto \
  ruby \
  ruby-dev \
  rubygems-integration \
  rake-compiler \
  bsdtar

# This is to build Marathon
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 642AC823
sudo apt-get update -yqq
sudo apt-get install -yqq --force-yes sbt

# Some gem dependencies
sudo gem install \
  yard \
  rspec \
  rubygems-tasks \
  bundler \
  tasks \
  task \
  custom_require

# We need to install FPM manually as it doesn't run on Xenial on Power
cd ~
git clone https://github.com/jordansissel/fpm.git
cd ~/fpm
bundle install 
make
sudo make install 

# This is hacky as the default nvidia script doesn't check for arch
case "$(arch)" in 
  "x86_64" | "amd64" )
    ARCH="amd64"
  ;;
  "ppc64le" | "ppc64el" ) 
    ARCH="ppc64le"
  ;;
esac

wget http://developer.download.nvidia.com/compute/cuda/7.5/Prod/gdk/gdk_linux_${ARCH}_352_79_release.run
chmod +x gdk_linux_${ARCH}_352_79_release.run
sudo ./gdk_linux_${ARCH}_352_79_release.run --installdir=/opt/nvidia-gdk --silent
echo "/opt/nvidia-gdk/usr/src/gdk/nvml/lib" | sudo tee /etc/ld.so.conf.d/nvidia-gdk.conf 
sudo ldconfig

# Using trunk
cd ~
git clone https://git-wip-us.apache.org/repos/asf/mesos.git 

git clone https://github.com/deric/mesos-deb-packaging.git

cd mesos-deb-packaging
./build-mesos --src-dir=${HOME}/mesos --enable-gpu

Puppet

Package could be automatically configured by a Puppet module

Authors