Skip to content

Instantly share code, notes, and snippets.

@nicksherron
Forked from samrocketman/compile_git.md
Created June 24, 2020 15:42
Show Gist options
  • Save nicksherron/a8d2854f1c00f7b8bfa1c6c50fd9a3c4 to your computer and use it in GitHub Desktop.
Save nicksherron/a8d2854f1c00f7b8bfa1c6c50fd9a3c4 to your computer and use it in GitHub Desktop.
Compiling git

The version of git that comes with RHEL6 is very old. I'll outline steps for compiling the latest git version on RHEL6. Working from /usr/local/src.

Following instructions for Git Pro book Getting Started Installing Git.

Prerequisites

yum install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

Optional man page prereqs.

yum install asciidoc xmlto

If using Debian derivative...

apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev asciidoc xmlto

Checkout and compile

cd /usr/local/src
git clone https://github.com/git/git.git
cd git
#old method
#git ls-remote origin | grep tags
#git checkout v1.8.4
#checkout latest stable version
git checkout $(git ls-remote --tags origin | grep -oE 'v[0-9]+(.[0-9]+){2}$' | tail -n1)
export DEFAULT_HELP_FORMAT="man"
autoconf
./configure
make && make install

Optionally install man pages (recommended).

make man && make install-man

Edit /etc/profile

export PATH="/usr/local/bin:${PATH}"

Upgrading git

cd /usr/local/src/git/
git reset --hard
git clean -xfd
git ls-remote | grep tags
git fetch
#checkout latest stable version
git checkout $(git ls-remote origin | grep 'refs/tags/v[0-9].[0-9].[0-9]$' | tail -n1 | cut -d'/' -f3)
autoconf && ./configure && make && make install && make man && make install-man

Oneliner to install the latest stable git version from git source. Assumes building and installing man pages as well.

cd /usr/local/src/git/ && git reset --hard && git clean -xfd && git fetch && git checkout $(git ls-remote --tags origin | grep -oE 'v[0-9]+(.[0-9]+){2}$' | tail -n1) && autoconf && ./configure && make && make install && make man && make install-man
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment