EOS

I. Prerequisites

To Build your eos service, you need at least 2 servers, one as eos server, and others as clients. Here we use CentOS or Scientific Linux 7 as our servers.

II. EOS Installation

There are compiled eos packages ready for insatallation, however you might want to compile eos and denpendent packages by yourself.

II.A Install from Cern Repos

One can install eos from cern repos. Create a yum repo with contents as following:

1
2
3
4
5
6
7
8
9
10
11
12
13
[eos-citrine]
name=EOS binaries from EOS project, citrine branch
baseurl=http://cern.ch/storage-ci/eos/citrine/tag/el-$releasever/$basearch/
enabled=1
gpgcheck=0
priority=10

[eos-citrine-deps]
name=EOS dependencies from EOS project, citrine branch
baseurl=http://cern.ch/storage-ci/eos/citrine-depend/el-$releasever/$basearch/
enabled=1
gpgcheck=0
priority=10

and copy it to /etc/yum.repos.d/

1
2
sudo yum makecache && sudo yum update
sudo yum install -y eos-folly eos-server eos-client eos-fuse

II.B Build RPM Packages Manually

II.B.a using devtoolset-7 collections

1
2
3
4
5
6
7
8
9
#### centos
sudo yum install -y centos-release-scl.noarch
#### scientific linux
sudo yum install -y yum-conf-repos
sudo yum install -y yum-conf-softwarecollections
sudo yum install -y devtoolset-7-gcc devtoolset-7-gcc-c++.x86_64 devtoolset-7-gcc-plugin-devel.x86_64
sudo yum install -y devtoolset-7-gcc-gfortran.x86_64 devtoolset-7-gdb.x86_64 devtoolset-7-strace.x86_64 devtoolset-7.x86_64
#### enable devltoolset
scl enable devtoolset-7 bash
1
2
sudo yum install -y yum-utils rpm-build rpm-build-libs yum-plugin-priorities
sudo yum install -y zlib-static zlib-devel bzip2-devel bzip2-devel

II.B.b Build eos-folly packages

1
2
3
4
5
6
git clone https://gitlab.cern.ch/eos/eos-folly && cd eos-folly
mkdir -p ~/rpmbuild/SOURCES
cp SConstruct.double-conversion ~/rpmbuild/SOURCES/
sudo yum install python2-scons openssl-devel libevent-devel cmake3 cmake devtoolset-6
#sed -i "s|devtoolset-6|devtoolset-7|g" eos-folly.spec
rpmbuild --undefine=_disable_source_fetch -ba eos-folly.spec

II.B.c Build eos-rocksdb packags

1
2
git clone https://gitlab.cern.ch/eos/eos-rocksdb && cd eos-rocksdb
rpmbuild --undefine=_disable_source_fetch -ba eos-rocksdb.spec

II.B.d Build eos packages

Install dependent packages

1
2
3
4
5
6
7
8
#### Download from cern
sudo yum install -y http://linuxsoft.cern.ch/cern/centos/7/cern/x86_64/Packages/protobuf3-3.3.1-2.el7.cern.x86_64.rpm
sudo yum install -y http://linuxsoft.cern.ch/cern/centos/7/cern/x86_64/Packages/protobuf3-compiler-3.3.1-2.el7.cern.x86_64.rpm
sudo yum install -y http://linuxsoft.cern.ch/cern/centos/7/cern/x86_64/Packages/protobuf3-devel-3.3.1-2.el7.cern.x86_64.rpm
#### eos-server dependence
sudo yum install -y openldap-devel e2fsprogs-devel libmicrohttpd libmicrohttpd-devel
#### libmicrohttpd dependence
sudo yum install -y graphviz graphviz-devel libgcrypt-devel gnutls-devel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#### Download eos from github
git clone https://gitlab.cern.ch/eos/eos
mv eos eos-citrine-4.3.7-1
tar cvzf eos-citrine-4.3.7-1.tar.bz2 eos-citrine-4.3.7-1
mv eos-citrine-4.3.7-1.tar.gz ~/rpmbuild/SOURCES/
cd eos-citrine-4.3.7-1 && cp eos.spec.in eos.spec
sed -i -e "s|@CPACK_PACKAGE_RELEASE@|1|g" -e "s|@CPACK_PACKAGE_VERSION_MAJOR@|4|g" -e "s|@CPACK_PACKAGE_NAME@|eos-citrine|g" -e "s|@CPACK_PACKAGE_VERSION|4.3.7|g" eos.spec
#### depends
sed -i "s|2017.09.18.00-4|2017.09.18.00-5|g" eos.spec
#### without server
rpmbuild --undefine=_disable_source_fetch --with server -ba eos.spec
#### with server
## build libmicrohttpd
cd microhttpd
cp vmem.patch epoll.patch fdshift.patch ~/rpmbuild/SOURCES/
rpmbuild --undefine=_disable_source_fetch -ba libmicrohttpd.spec
sudo rpm -ivhU ~/rpmbuild/RPMS/x86_64/libmicrohttpd-* && cd ..
## build eos with server
rpmbuild --undefine=_disable_source_fetch --with server -ba eos.spec

III. Configure EOS Server/Clients

IV. Sample Usage of EOS Service