本日も乙

ただの自己満足な備忘録。

CentOSでGit v2系をRPMで作成する

[toc]

脆弱性スキャンツールVulsをインストールする際、Vulsのバージョンがv0.1.6まではGitのバージョンをv2以上にする必要がありました(最新版v0.1.7でv2以上でなくてもよくなったみたいです)。

CentOSでGitをYumでインストールしようとすると最新のCentOS 7.2でもv1.8.3が最新なので、v2以上をインストールするには自分でソースを持ってきてビルドする必要がありました。しかし、他のサーバも同様にGit v2以上をインストールする際、一つ一つビルドするよりもパッケージでインストールできた方が楽ですよね。
そこで今回は他サーバに配布するためにGitのv2系をRPMで作成してみました。方法等はgit 2.2.0 の rpm 作成方法 - tkuchikiの日記を参考にさせていただきました。参考記事ではCentOS 6.4でしたが、CentOS 7でも同じ方法でできました。

今回作成した環境はCentOS 6.5, CentOS 7.2です。Gitのバージョンは2.8.4です。

依存性のあるパッケージのインストール

$ sudo yum install zlib-devel openssl-devel curl-devel expat-devel gettext subversion-perl perl-YAML xmlto asciidoc perl-ExtUtils-MakeMaker

rpm-buildのインストール、準備

$ sudo yum install rpm-build rpmdevtools
$ rpmdev-setuptree

ソースの取得、修正

git.spec がある2.8系の最新(2.8.4)を使います(2016年6月時点)。

$ wget https://www.kernel.org/pub/software/scm/git/git-2.8.4.tar.gz
$ tar zxf git-2.8.4.tar.gz
$ cd git-2.8.4
$ vim git.spec

git.specを修正します。

$ diff -u git.spec.orig git.spec
--- git.spec.orig       2016-06-07 06:47:59.000000000 +0900
+++ git.spec    2016-08-04 15:44:17.735444696 +0900
@@ -8,7 +8,7 @@
 Group:                 Development/Tools
 URL:           http://kernel.org/pub/software/scm/git/
 Source:        http://kernel.org/pub/software/scm/git/%{name}-%{version}.tar.gz
-BuildRequires: zlib-devel >= 1.2, openssl-devel, curl-devel, expat-devel, gettext  %{!?_without_docs:, xmlto, asciidoc > 6.0.3}
+BuildRequires: zlib-devel >= 1.2, openssl-devel, curl-devel, expat-devel, gettext subversion-perl, perl-YAML, perl-ExtUtils-MakeMaker %{!?_without_docs:, xmlto, asciidoc > 6.0.3}
 BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

 Requires:      perl-Git = %{version}-%{release}

ビルド

$ mv ~/git-2.8.4.tar.gz ~/rpmbuild/SOURCES/
$ mv ~/git-2.8.4/git.spec ~/rpmbuild/SPECS/
$ rpmbuild -ba ~/rpmbuild/SPECS/git.spec

ビルドが通ればRPMの作成は完了です。 git-2.8.4-1.<OS>.centos.<ARCH>.rpm, perl-Git-2.8.4-1.<OS>.centos.<ARCH>.rpmが生成物になります。

作成したRPMをインストール

試しに作成したRPMをインストールしてみます。 2つのRPMファイルを一気にインストールします。

# CentOS 6
$ sudo rpm -Uvh ~/rpmbuild/RPMS/x86_64/{git-2.8.4-1.el6.x86_64.rpm,perl-Git-2.8.4-1.el6.x86_64.rpm}

# CentOS 7
$ sudo rpm -Uvh ~/rpmbuild/RPMS/x86_64/{git-2.8.4-1.el7.centos.x86_64.rpm,perl-Git-2.8.4-1.el7.centos.x86_64.rpm}

$ git --version
git version 2.8.4

後片付け

作成後は~/rpmbuild以下は不要になるので削除します。

$ rm -rf ~/rpmbuild

最後に

CentOSでGit v2系のRPMを作成してみました。Amazon LinuxもデフォルトのGitのバージョンが低いので次回はAmazon Linuxにおける作成方法を紹介したいと思います。

参考URL