summaryrefslogtreecommitdiffstats
path: root/doc/developer-guide/Compiling-RPMS.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/developer-guide/Compiling-RPMS.md')
-rw-r--r--doc/developer-guide/Compiling-RPMS.md178
1 files changed, 178 insertions, 0 deletions
diff --git a/doc/developer-guide/Compiling-RPMS.md b/doc/developer-guide/Compiling-RPMS.md
new file mode 100644
index 00000000000..b1bd39b26f8
--- /dev/null
+++ b/doc/developer-guide/Compiling-RPMS.md
@@ -0,0 +1,178 @@
+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 when available)
+- 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.
+- 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+, 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)
+
+​1. Install gcc, the python development headers, and python setuptools:
+
+ $ sudo yum -y install gcc python-devel python-setuptools
+
+​2. 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 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.
+
+​1. Install EPEL first:
+
+ $ curl -OL 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
+
+​2. 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 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.
+
+​1. Install EPEL first:
+
+ $ sudo yum -y install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
+
+​2. 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 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.
+
+​1. Install EPEL first:
+
+ $ sudo yum -y install http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
+
+​2. 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 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. :)
+
+​1. Install the needed packages
+
+ $ sudo yum -y --disablerepo=rhs* --enablerepo=*optional-rpms install git autoconf \
+   automake bison cmockery2-devel 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
+
+​2. Clone the GlusterFS git repository
+
+ $ git clone git://git.gluster.org/glusterfs
+ $ cd glusterfs
+
+​3. 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 then release-3.5.
+
+​4. Configure and compile GlusterFS
+
+Now you're ready to compile Gluster:
+
+ $ ./autogen.sh
+ $ ./configure --enable-fusermount
+ $ make dist
+
+​5. 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 \ No newline at end of file