[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における作成方法を紹介したいと思います。