2018-08-21

tobijibu

CentOSのGitをソースから入れ直す

git logに以下のオプションを渡すと、 指定したフォーマットでコミット日付を取得することができます。

$ git log -1 --format=%cd --date=format:"%Y.%m.%d" filename

しかし、yumでインストールしたGitはバージョンが古い(v1.8.3.1)ので、 上記のオプションを指定することができません。

$ git log -1 --format=%cd --date=format:"%Y.%m.%d" filename
fatal: unknown date format format:%Y.%m.%d

そこで今回は、この問題を解消するためにGitをソースからインストールしてみます。 内容は非常に単純で、公式ページの操作をそのまま実行するだけです。
公式ページ:使い始める-Gitのインストール#_ソースからのインストール

なお、wgetでソースを取得する方法を記載していますが、 gitでソースを取得する方法の方が簡単です。


環境
Host : Windows7 Virtualbox + Vagrant
Guest : CentOS 7.5

必要なライブラリをインストール

必要なライブラリをインストールします。

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

Gitソースをダウンロード

ソースをダウンロードして解凍します。 インストールしたいバージョンのファイルを取得してください。 ここではv2.15.2にしました。
最初にインストールしようとした時にサーバの調子が悪かったようでv2.18をダウンロードしようとしてもエラーになってしまいました。。 今(2018/08/21現在)は問題なくダウンロードできます。

$ cd /usr/local/src
$ sudo wget https://github.com/git/git/archive/v2.15.2.tar.gz
$ sudo tar -zxf v2.15.2.tar.gz
$ cd git-2.15.2

インストール

$ sudo make configure
$ sudo ./configure --prefix=/usr
$ sudo make all doc info
$ sudo make install install-doc install-html install-info

完了

新しいGitが入り、オプションも指定することができるようになりました。

$ git version
git version 2.15.2
$ git log -1 --format=%cd --date=format:"%Y.%m.%d" filename
2018.01.31

おまけ

公式ページにもある通りこの手順でインストールすると、次からはgitを使ってGitをアップデートすることができるようです。 ということは、yumgitをインストールしてソースを取得し、 make installした方が楽なんじゃないか?

試してみましょう。 緑の箇所以外は公式ページと同じです。

$ sudo yum -y install curl-devel expat-devel gettext-devel \
 openssl-devel zlib-devel perl-ExtUtils-MakeMaker
$ sudo yum install -y git
$ sudo git clone git://git.kernel.org/pub/scm/git/git.git /usr/local/src/git
$ cd /usr/local/src/git
$ sudo git checkout v2.18.0
$ sudo make configure
$ sudo ./configure --prefix=/usr
$ sudo make all doc info
$ sudo make install install-doc install-html install-info
$ git version
git version 2.18.0
$ git log -1 --format=%cd --date=format:"%Y.%m.%d" filename
2018.01.31

できました。こっちはバージョン指定もできますし、 wgetを使ってソースを取得するよりも簡単ですね。