Compiling RPMS
How to compile GlusterFS RPMs from git source, for RHEL/CentOS, and Fedora
Creating rpm's of GlusterFS from git source is fairly easy, once you know the steps.
RPMs can be compiled on at least the following OS's:
- Red Hat Enterprise Linux 5, 6 (& 7 when available)
- CentOS 5, 6, 7 and 8
- Fedora 16-20
Specific instructions for compiling are below. If you're using:
- Fedora 16-20 - Follow the Fedora steps, then do all of the Common steps.
- CentOS 5.x - Follow the CentOS 5.x steps, then do all of the Common steps
- CentOS 6.x - Follow the CentOS 6.x steps, then do all of the Common steps.
- CentOS 8.x - Follow the CentOS 8.x steps, then follow from step 2 in the Common steps.
- RHEL 6.x - Follow the RHEL 6.x steps, then do all of the Common steps.
Note - these instructions have been explicitly tested on all of CentOS 5.10, RHEL 6.4, CentOS 6.4+, CentOS 8.4, and Fedora 16-20. Other releases of RHEL/CentOS and Fedora may work too but haven't been tested. Please update this page appropriately if you do so. :)
Preparation steps for Fedora 16-20 (only)
-
Install gcc, the python development headers, and python setuptools:
# sudo yum -y install gcc python-devel python-setuptools
-
If you're compiling GlusterFS version 3.4, then install python-swiftclient. Other GlusterFS versions don't need it:
# sudo easy_install simplejson python-swiftclient
Now follow through with the Common Steps part below.
Preparation steps for CentOS 5.x (only)
You'll need EPEL installed first and some CentOS-specific packages. The commands below will get that done for you. After that, follow through the "Common steps" section.
-
Install EPEL first:
# curl -OL `[`http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm`](http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm) # sudo yum -y install epel-release-5-4.noarch.rpm --nogpgcheck
-
Install the packages required only on CentOS 5.x:
# sudo yum -y install buildsys-macros gcc ncurses-devel \ python-ctypes python-sphinx10 redhat-rpm-config
Now follow through with the Common Steps part below.
Preparation steps for CentOS 6.x (only)
You'll need EPEL installed first and some CentOS-specific packages. The commands below will get that done for you. After that, follow through the "Common steps" section.
-
Install EPEL first:
# sudo yum -y install `[`http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm`](http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm)
-
Install the packages required only on CentOS:
# sudo yum -y install python-webob1.0 python-paste-deploy1.5 python-sphinx10 redhat-rpm-config
Now follow through with the Common Steps part below.
Preparation steps for CentOS 8.x (only)
You'll need EPEL installed and then the powertools package enabled.
-
Install EPEL first:
# sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
-
Enable the PowerTools repo and install CentOS 8.x specific packages for building the rpms.
# sudo yum --enablerepo=PowerTools install automake autoconf libtool flex bison openssl-devel \ libxml2-devel libaio-devel libibverbs-devel librdmacm-devel readline-devel lvm2-devel \ glib2-devel userspace-rcu-devel libcmocka-devel libacl-devel sqlite-devel fuse-devel \ redhat-rpm-config rpcgen libtirpc-devel make python3-devel rsync libuuid-devel \ rpm-build dbench perl-Test-Harness attr libcurl-devel selinux-policy-devel -y
Now follow through from Point 2 in the Common Steps part below.
Preparation steps for RHEL 6.x (only)
You'll need EPEL installed first and some RHEL specific packages. The 2 commands below will get that done for you. After that, follow through the "Common steps" section.
-
Install EPEL first:
# sudo yum -y install `[`http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm`](http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm)
-
Install the packages required only on RHEL:
# sudo yum -y --enablerepo=rhel-6-server-optional-rpms install python-webob1.0 \ python-paste-deploy1.5 python-sphinx10 redhat-rpm-config
Now follow through with the Common Steps part below.
Common Steps
These steps are for both Fedora and RHEL/CentOS. At the end you'll have the complete set of GlusterFS RPMs for your platform, ready to be installed.
NOTES for step 1 below:
- If you're on RHEL/CentOS 5.x and get a message about lvm2-devel not being available, it's ok. You can ignore it. :)
- If you're on RHEL/CentOS 6.x and get any messages about python-eventlet, python-netifaces, python-sphinx and/or pyxattr not being available, it's ok. You can ignore them. :)
- If you're on CentOS 8.x, you can skip step 1 and start from step 2. Also, for CentOS 8.x, the steps have been tested for the master branch. It is unknown if it would work for older branches.
-
Install the needed packages
# sudo yum -y --disablerepo=rhs* --enablerepo=*optional-rpms install git autoconf \ automake bison dos2unix flex fuse-devel glib2-devel libaio-devel \ libattr-devel libibverbs-devel librdmacm-devel libtool libxml2-devel lvm2-devel make \ openssl-devel pkgconfig pyliblzma python-devel python-eventlet python-netifaces \ python-paste-deploy python-simplejson python-sphinx python-webob pyxattr readline-devel \ rpm-build systemtap-sdt-devel tar libcmocka-devel
-
Clone the GlusterFS git repository
# git clone `[`git://git.gluster.org/glusterfs`](git://git.gluster.org/glusterfs) # cd glusterfs
-
Choose which branch to compile
If you want to compile the latest development code, you can skip this step and go on to the next one. :)
If instead, you want to compile the code for a specific release of GlusterFS (such as v3.4), get the list of release names here:
# git branch -a | grep release remotes/origin/release-2.0 remotes/origin/release-3.0 remotes/origin/release-3.1 remotes/origin/release-3.2 remotes/origin/release-3.3 remotes/origin/release-3.4 remotes/origin/release-3.5
Then switch to the correct release using the git "checkout" command, and the name of the release after the "remotes/origin/" bit from the list above:
# git checkout release-3.4
NOTE - The CentOS 5.x instructions have only been tested for the master branch in GlusterFS git. It is unknown (yet) if they work for branches older than release-3.5.
If you are compiling the latest development code you can skip steps 4 and 5. Instead, you can run the below command and you will get the RPMs.
# extras/LinuxRPM/make_glusterrpms
-
Configure and compile GlusterFS
Now you're ready to compile Gluster:
# ./autogen.sh # ./configure --enable-fusermount # make dist
-
Create the GlusterFS RPMs
# cd extras/LinuxRPM # make glusterrpms
That should complete with no errors, leaving you with a directory containing the RPMs.
# ls -l *rpm -rw-rw-r-- 1 jc jc 3966111 Mar 2 12:15 glusterfs-3git-1.el5.centos.src.rpm -rw-rw-r-- 1 jc jc 1548890 Mar 2 12:17 glusterfs-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 66680 Mar 2 12:17 glusterfs-api-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 20399 Mar 2 12:17 glusterfs-api-devel-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 123806 Mar 2 12:17 glusterfs-cli-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 7850357 Mar 2 12:17 glusterfs-debuginfo-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 112677 Mar 2 12:17 glusterfs-devel-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 100410 Mar 2 12:17 glusterfs-fuse-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 187221 Mar 2 12:17 glusterfs-geo-replication-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 299171 Mar 2 12:17 glusterfs-libs-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 44943 Mar 2 12:17 glusterfs-rdma-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 123065 Mar 2 12:17 glusterfs-regression-tests-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 16224 Mar 2 12:17 glusterfs-resource-agents-3git-1.el5.centos.x86_64.rpm -rw-rw-r-- 1 jc jc 654043 Mar 2 12:17 glusterfs-server-3git-1.el5.centos.x86_64.rpm