TL;DR
Ubuntu
$ sudo apt -y remove git
$ sudo apt -y install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev autoconf asciidoc xmlto docbook2x make gcc
$ wget https://github.com/git/git/archive/v2.15.1.tar.gz
$ tar -zxf v2.15.1.tar.gz
$ cd git-2.15.1
$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info
$ git --version
CentOS
$ sudo yum -y remove git
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel autoconf asciidoc xmlto docbook2X make gcc
$ sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
$ wget https://github.com/git/git/archive/v2.15.1.tar.gz
$ tar -zxf v2.15.1.tar.gz
$ cd git-2.15.1
$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info
$ git --version
※ 最新の Git のバージョンは、Releases · git/git を参照のこと
パッケージマネージャーの Git は古いことが多い
apt
や yum
などの Linux のパッケージマネージャーでインストールした Git は、バージョンが古いことが多いです。
$ date
Tue Dec 5 21:40:00 JST 2017 # 2017 年 12 月 5 日現在
$ sudo apt -y update
$ sudo apt -y upgrade
$ sudo apt -y install git
$ git --version
git version 2.7.4
$ date
Tue Dec 5 21:40:00 JST 2017 # 2017 年 12 月 5 日現在
$ sudo yum -y update
$ sudo yum -y install git
$ git --version
git version 1.8.3.1
特に yum
でインストールした Git は古いです。
Git のバージョンが古くても最低限のことは問題ないのですが、新しいバージョンで追加された機能を使いたいときには、やはり最新版をインストールしておきたいです。
たとえば、Git 2.8 以降では、user.useConfigOnly
という設定が追加され、これを有効にすることで、ユーザ名やメールアドレスを設定していないときに、環境変数を使用して勝手にユーザ情報を参照してしまうことを防ぐことができます。
参考: リポジトリごとに user.name や user.email の設定を強制する
このような便利機能があるのですが、パッケージマネージャーからインストールした Git だと、古くて対応していません。user.useConfigOnly
を設定しているから、うっかりユーザ名とメールアドレスを設定し忘れても大丈夫、と思っていたけど、実は、Git のバージョンが古くて環境変数のユーザ情報を参照してしまっていた…なんてことにもなりかねないです。
以降では、最新版を Git を、パッケージマネージャーからではなく、ソースからビルドしてインストールする方法について説明します。
既存の Git をアンインストール
既にパッケージマネージャーで Git をインストールしていた場合は、アンインストールします。
Ubuntu の場合
$ sudo apt -y remove git
CentOS の場合
$ sudo yum -y remove git
必要なライブラリをインストール
まずは必要なライブラリをインストールします。
Ubuntu の場合
$ sudo apt -y install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev autoconf asciidoc xmlto docbook2x make gcc
CentOS の場合
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel autoconf asciidoc xmlto docbook2X make gcc
$ sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
ソースコードをダウンロード
Git のソースコードをダウンロードします。以下の GitHub のページにアクセスします。
最新版の Tarball のダウンロードリンクをコピーします。上記の画像の例では、v2.15.1 が最新版なので、v2.15.1 の tar.gz
のリンクをコピーします。以降の説明では、v2.15.1 が最新版だと仮定します。
Tarball をダウンロードします。
$ wget https://github.com/git/git/archive/v2.15.1.tar.gz
カレントディレクトリに v2.15.1.tar.gz
がダウンロードされます。
ビルドしてインストール
先ほどダウンロードした Tarball を展開します。
$ tar -zxf v2.15.1.tar.gz
展開されたディレクトリに移動します。
$ cd git-2.15.1
あとは、ビルドしてインストールすれば完了です。
$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info
バージョンを確認して、最新の Git のバージョンが表示されたら成功です。
$ git --version
git version 2.15.1