git unter RHEL, CentOS und Oracle Linux kompilieren

Posted on Tue 06 October 2015 in how-to

git darf im Jahr 2015 wohl als das beliebteste Versionskontrollsystem bezeichnet werden. In Version 6.7 liefert RHEL, Oracle Linux oder die kostenfreie Variante CentOS allerdings eine stark veraltete Version aus. Version 1.7.1 ist zwar sehr stabil, aber von 2010.

Für manche Anwendungsfälle benötigt man eine aktuelle Version, wie die am 29. September erschienene Version 2.6.1.

Zuerst wird git deinstalliert:

yum remove -y git

Im Anschluss erfolgt die Installation einiger Pakete aus den Standard-Repositories sowie die Installation des EPEL Repositories, welches zusätzliche Pakete für Standardsoftware anbietet:

# Installation der Abhängigkeiten aus den Standard-Repositories
yum -y install zlib-devel openssl-devel cpio expat-devel gettext-devel gcc autoconf curl-devel
# EPEL Repo für zusätzliche Dependencies
cd /tmp
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
rpm -i epel-release-latest-6.noarch.rpm
# Update der Quellen
yum update
# Installation der zusätzlichen Dependencies
yum install -y asciidoc xmlto docbook2X
ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
# manuelle Installation des MakeMaker
cd /usr/local/src
wget http://search.cpan.org/CPAN/authors/id/B/BI/BINGOS/ExtUtils-MakeMaker-7.10.tar.gz
tar xzvf ExtUtils-MakeMaker-7.10.tar.gz
cd ExtUtils-MakeMaker-7.10
perl Makefile.PL
make  
make install

Im Anschluss kann der Tarball des aktuellen git heruntergeladen und kompiliert werden:

cd /usr/local/src
wget https://github.com/git/git/archive/v2.6.1.tar.gz
tar xzvf v2.6.1.tar.gz
cd git-2.6.1
make configure
./configure --prefix=/usr --with-expat --with-openssl --with-curl
make all doc info
make install install-doc install-html install-info

Ein Blick auf die Version zur Kontrolle:

git --version
git version 2.6.1

Besonders wichtig sind die Pakete openssl-devel und curl-devel, da wir dadurch beim ./configure die dazugehörigen Parameter verwenden können, um Repos auch per http und https abzurufen. Denn was wäre ein git ohne die Möglichkeit mal eben ein Clone URL von GitHub zu kopieren?