LoginSignup
10
9

More than 5 years have passed since last update.

CentOS 6 に最新 Git をrpmにしてインストール

Last updated at Posted at 2015-11-10

CentOS 6 に最新 Git をソースからインストール。コピペ用 - Qiita に触発されてパッケージ化してインストールする方法を書きました。

tl;dr

curl -fsSL https://gist.githubusercontent.com/eru/2a8a342e499809cd12b4/raw/install-git-rpm-centos6.sh | sh

解説

yumコマンド実行時にsudoを付けるか

MY_YUM="sudo yum"
if [ ${EUID:-${UID}} = 0 ]; then
    MY_YUM="yum"
fi

${MY_YUM}に、コマンド名を指定しておいて、eval ${MY_YUM}で実行することで、非rootユーザでも動くハズ

gitパッケージが既にインストールされている場合には削除

eval ${MY_YUM} erase -y git

最終的なインストール時にコンフリクトがでるので予め削除しておく

ビルドに必要なパッケージ類のインストール

eval ${MY_YUM} install -y tar gcc-c++ curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker rpmdevtools rpm-build xmlto asciidoc perl-Error

rpmbuildを行うためのディレクトリツリーを作成と移動

rpmdev-setuptree
cd ~/rpmbuild/SOURCES

最新リリースの取得

GIT_VERSION=$(curl -sL https://www.kernel.org/pub/software/scm/git/ | sed -nre 's/<a href="git-([0-9\.]+)\.tar\.gz">.*/\1/p' | sort -t . -n -k 1,1 -k 2,2 -k 3,3 -r | head -n 1)

ほぼ@hidekuroの方法をパクらせてもらった。詳細はTOPのリンク先からどうぞ。

ソースコードのアーカイブをダウンロード

curl -OL https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz

早速取得したバージョン情報を使う。

SPECファイルの抽出

cd ../SPECS
tar xvf ../SOURCES/git-${GIT_VERSION}.tar.gz git-${GIT_VERSION}/git.spec
mv git-${GIT_VERSION}/git.spec .

ビルドに必要なSPECファイルだけ展開する。実際はファイルを移動される必要はないが、所有者がビルドユーザと同一でないとrpmbuildでエラーがでるので、移動することで所有者を直してる。

パッケージのビルド

rpmbuild -bb git.spec

srpmは特に必要ないので、-bbでバイナリパッケージだけ生成

ビルドして出来上がったものをインストール

eval ${MY_YUM} localinstall -y ~/rpmbuild/RPMS/x86_64/git-${GIT_VERSION}-1.el6.x86_64.rpm ~/rpmbuild/RPMS/x86_64/perl-Git-${GIT_VERSION}-1.el6.x86_64.rpm

必要用最低限のものだけインストールしている。必要であれば、git-svnなどもインストールできる。

後片付け

unset MY_YUM
unset GIT_VERSION

echo "Complete\!\nYou can delete build files 'rm -rf ~/rpmbuild'"

環境変数をアンセットして、完了した旨のメッセージを表示。
~/rpmbuildも削除してしまって問題ないが、前述の通り他のパッケージもインストールしたい人用にあえて残してある。

追記

2016-04-04

各バージョン番号が2桁以上になった場合に、最新の番号が取得できなかったので修正

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9