CentOS7にGit最新版(2.9.5)をインストール

[nvm](https://github.com/creationix/nvm)を入れようとしたらgitがないことに気づいたので作業をまとめておきます。
[公式サイトのダウンロードページ](https://git-scm.com/download/linux)に行くと

>RHEL and derivatives typically ship older versions of git. You can download a tarball and build from source, or use a 3rd-party repository such as the IUS Community Project to obtain a more recent version of git.

> RHELとその派生ディストリビューションについては、古いバージョンのgitを載せていることが多い。tarファイルをダウンロードしてソースからビルドするか、IUS Community Projectのようなサードパーティのリポジトリからより新しいバージョンのgitを入手することができる。

とあります。Vagrant+VirtualBox+bento/centos-7.3で立ち上げたCentOS7だとgitがそもそも入っていませんでした。

```
$ which git
/usr/bin/which: no git in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/vagrant/.local/bin:/home/vagrant/bin)
```

## tarファイルのダウンロード

[tarファイル一覧](https://www.kernel.org/pub/software/scm/git/)から、[git-2.9.5.tar.gz](https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz)をダウンロードします。

```
$ cd /usr/local/src/
$ sudo wget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
$ ls
git-2.9.5.tar.gz
```

## 解凍

```
$ sudo tar zxvf git-2.9.5.tar.gz
$ ls
git-2.9.5  git-2.9.5.tar.gz
```

## ビルド

ビルドにはgccが必要なので先に入れておきます

```
$ sudo yum install -y gcc
$ which gcc
/usr/bin/gcc
```

makeコマンドを実行しましょう

```
$ cd git-2.9.5
$ sudo make prefix=/usr/local all
...
git-compat-util.h:280:25: 致命的エラー: openssl/ssl.h: そのようなファイルやディレクトリはありません
...
```

opensslも必要でした。赤字で怒られましたので、[こちら](http://vdeep.net/centos7-git)を参考にgit導入に必要なツールをまとめてインストールします。

```
$ sudo yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
```

再チャレンジします

```
$ sudo make prefix=/usr/local all
...
    GEN git-submodule
    GEN git-web--browse
    SUBDIR perl
/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] エラー 2
make: *** [perl/perl.mak] エラー 2
```

なんかエラーが出ました。とりあえず続きをやってみます。

```
$ sudo make prefix=/usr/local install
    SUBDIR perl
/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] エラー 2
make: *** [perl/perl.mak] エラー 2

```

はい、無理ですね。エラー(Can't locate ExtUtils/MakeMaker.pm in ...  aborted at Makefile.PL line 3.)を検索してみると[それっぽい](https://qiita.com/soeda_jp/items/e9ed5f7d145a15aad496#%E3%81%9D%E3%81%AE%EF%BC%91makefilepl%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%AE%E3%81%AB%E5%BF%85%E8%A6%81%E3%81%AA%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%8C%E3%81%AA%E3%81%84)記事がありました。

```
$ sudo yum install perl-ExtUtils-MakeMaker
```

もう一度

```
$ sudo make prefix=/usr/local all
```

エラーが出ませんでした。インストールを実行します。

```
$ sudo make prefix=/usr/local install
```

ログがわけわかりませんがエラーは出ていないようなのでバージョンを確認します。


```
$ git --version
git version 2.9.5
```

できました。ソースからビルドをするためには必要なツールを用意するというのが重要ですね。この世の中gitがないと始まらないのでよかったです。

# まとめ

```shell-session
$ cd /usr/local/src
$ sudo wget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.g
$ sudo tar zxvf git-2.9.5.tar.gz
$ sudo yum install -y gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
$ cd git-2.9.5
$ sudo make prefix=/usr/local all
$ sudo make prefix=/usr/local install
```

参考URL
[CentOS7に最新のGitを導入する方法 ](http://vdeep.net/centos7-git)
[CentOSに最新版のGitをインストール・アップデートする方法](http://www.task-notes.com/entry/20150622/1434942000)
[gitをソースコードから入れる](https://qiita.com/soeda_jp/items/e9ed5f7d145a15aad496)