CentOSにGitをインストールする方法


- 環境
    - CentOS Linux release 7.8.2003 (Core)

`yum install git`でもインストールできるけれど
[CentOS7 に最新版の Git をインストールする方法 - Qiita](https://qiita.com/tomy0610/items/66e292f80aa1adc1161d)でインストールしてみる

# 準備 : 依存関係にあるライブラリをインストールする
1. 作ったばかりのCentOSなので指定のライブラリを片っ端からインストールする
1. wgetも忘れずにインストールする

```bash
# 1. 片っ端からインストールする
$ sudo yum -y install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker autoconf
Loaded plugins: fastestmirror
...省略...
Installed:
  autoconf.noarch 0:2.69-11.el7            expat-devel.x86_64 0:2.1.0-11.el7               gcc.x86_64 0:4.8.5-39.el7            gettext-devel.x86_64 0:0.19.8.1-3.el7     libcurl-devel.x86_64 0:7.29.0-57.el7
  openssl-devel.x86_64 1:1.0.2k-19.el7     perl-ExtUtils-MakeMaker.noarch 0:6.68-3.el7     zlib-devel.x86_64 0:1.2.7-18.el7

Dependency Installed:
  cpp.x86_64 0:4.8.5-39.el7                        gdbm-devel.x86_64 0:1.10-8.el7                      gettext-common-devel.noarch 0:0.19.8.1-3.el7         git.x86_64 0:1.8.3.1-21.el7_7
  glibc-devel.x86_64 0:2.17-307.el7.1              glibc-headers.x86_64 0:2.17-307.el7.1               kernel-headers.x86_64 0:3.10.0-1127.el7              keyutils-libs-devel.x86_64 0:1.5.8-3.el7
  krb5-devel.x86_64 0:1.15.1-46.el7                libcom_err-devel.x86_64 0:1.42.9-17.el7             libdb-devel.x86_64 0:5.3.21-25.el7                   libkadm5.x86_64 0:1.15.1-46.el7
  libmpc.x86_64 0:1.0.1-3.el7                      libselinux-devel.x86_64 0:2.5-15.el7                libsepol-devel.x86_64 0:2.5-10.el7                   libverto-devel.x86_64 0:0.2.5-4.el7
  m4.x86_64 0:1.4.16-10.el7                        mpfr.x86_64 0:3.1.1-4.el7                           pcre-devel.x86_64 0:8.32-17.el7                      perl.x86_64 4:5.16.3-295.el7
  perl-Carp.noarch 0:1.26-244.el7                  perl-Data-Dumper.x86_64 0:2.145-3.el7               perl-Encode.x86_64 0:2.51-7.el7                      perl-Error.noarch 1:0.17020-2.el7
  perl-Exporter.noarch 0:5.68-3.el7                perl-ExtUtils-Install.noarch 0:1.58-295.el7         perl-ExtUtils-Manifest.noarch 0:1.61-244.el7         perl-ExtUtils-ParseXS.noarch 1:3.18-3.el7
  perl-File-Path.noarch 0:2.09-2.el7               perl-File-Temp.noarch 0:0.23.01-3.el7               perl-Filter.x86_64 0:1.49-3.el7                      perl-Getopt-Long.noarch 0:2.40-3.el7
  perl-Git.noarch 0:1.8.3.1-21.el7_7               perl-HTTP-Tiny.noarch 0:0.033-3.el7                 perl-PathTools.x86_64 0:3.40-5.el7                   perl-Pod-Escapes.noarch 1:1.04-295.el7
  perl-Pod-Perldoc.noarch 0:3.20-4.el7             perl-Pod-Simple.noarch 1:3.28-4.el7                 perl-Pod-Usage.noarch 0:1.63-3.el7                   perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
  perl-Socket.x86_64 0:2.010-5.el7                 perl-Storable.x86_64 0:2.45-3.el7                   perl-TermReadKey.x86_64 0:2.30-20.el7                perl-Test-Harness.noarch 0:3.28-3.el7
  perl-Text-ParseWords.noarch 0:3.29-4.el7         perl-Time-HiRes.x86_64 4:1.9725-3.el7               perl-Time-Local.noarch 0:1.2300-2.el7                perl-constant.noarch 0:1.27-2.el7
  perl-devel.x86_64 4:5.16.3-295.el7               perl-libs.x86_64 4:5.16.3-295.el7                   perl-macros.x86_64 4:5.16.3-295.el7                  perl-parent.noarch 1:0.225-244.el7
  perl-podlators.noarch 0:2.5.1-3.el7              perl-threads.x86_64 0:1.87-4.el7                    perl-threads-shared.x86_64 0:1.43-6.el7              pyparsing.noarch 0:1.5.6-9.el7
  systemtap-sdt-devel.x86_64 0:4.0-11.el7

Complete!

# 2. wgetもインストールする
$ sudo yum -y install wget
Loaded plugins: fastestmirror
...省略...
Installed:
  wget.x86_64 0:1.14-18.el7_6.1

Complete!

```

# zipファイルをダウンロードして解凍する
1. [Index of /pub/software/scm/git/](https://mirrors.edge.kernel.org/pub/software/scm/git/)からインストールするバージョンを確認する
    - 今回は、`git-2.9.5.tar.gz`にする
    - 上記のサイトに最新版がないことにインストールし終わってから気が付いた。次は違うサイトを探してやってみよう。
        - [2020-04-29時点での最新はv2.26.2だった](https://git-scm.com/)
1. 任意のインストールするディレクトリへ移動する
1. サイトから圧縮ファイルをダウンロードする
1. 圧縮ファイルを解凍する
1. 使い終わった圧縮ファイルを削除する

```bash
# 2. インストールするディレクトリへ移動する
$ cd /opt/

# 3. 圧縮ファイルをダウンロードする
$ sudo wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
--2020-04-29 12:32:33--  https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
Resolving mirrors.edge.kernel.org (mirrors.edge.kernel.org)... 147.75.95.133, 2604:1380:3000:1500::1
Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.95.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5928730 (5.7M) [application/x-gzip]
Saving to: ‘git-2.9.5.tar.gz’

100%[=========================================================================================================================================================================>] 5,928,730   --.-K/s   in 0.03s

2020-04-29 12:32:33 (189 MB/s) - ‘git-2.9.5.tar.gz’ saved [5928730/5928730]

# 4. 圧縮ファイルを解凍する
$ sudo tar xzvf git-2.9.5.tar.gz
git-2.9.5/
...省略...
git-2.9.5/git-gui/version

# 5. 圧縮ファイルを削除する
$ sudo rm git-2.9.5.tar.gz
```

# Gitをインストールする
1. 解凍先のディレクトリへ移動する
1. `make`コマンドでインストールする
1. バージョンを確認する

```bash
# 1. 解凍先のディレクトリへ移動する
$ cd git-2.9.5/

# 2. makeコマンドでインストールする
$ sudo make prefix=/usr/local all
GIT_VERSION = 2.9.5
    * new build flags
...省略...
    GEN bin-wrappers/test-wildmatch
    GEN git-remote-testgit

$ sudo make prefix=/usr/local install
    SUBDIR perl
/usr/bin/perl Makefile.PL PREFIX='/usr/local' INSTALL_BASE='' --localedir='/usr/local/share/locale'
Writing perl.mak for Git
    GEN git-add--interactive
...省略...
        cp "$execdir/git-remote-http" "$execdir/$p" || exit; \
done && \
./check_bindir "z$bindir" "z$execdir" "$bindir/git-add"

# 3. バージョンを確認する
$ git --version
git version 2.9.5
```

# おまけ
1. EPELリポジトリを使えるようにする
    - [CentOSのyumコマンドでいつも追加するepel-releaseってなに？ - 104blog](https://www.toyo104-memo.com/entry/epel-release)
1. Git LFSをインストールする
    - [Git LFSについて調べてみた - nttlabs - Medium](https://medium.com/nttlabs/enabling-git-lfs-c907ca393ccb)

```bash
# 1. EPELリポジトリを使えるようにする
$ sudo yum -y install epel-release
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
...省略...
Installed:
  epel-release.noarch 0:7-11

Complete!

# 2. Git LFSをインストールする
$ sudo -y yum install git-lfs
Loaded plugins: fastestmirror
...省略...
Installed:
  git-lfs.x86_64 0:2.10.0-1.el7

Complete!
$ git lfs version
git-lfs/2.10.0 (Fedora %{fedora}; linux amd64; go 1.13.6)
```