文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

gitの最新バージョンのソースをGithubからDLしてコンパイル・インストールする

最新バージョンのgitのインストールを、Githubからソースをダウンロードしてコンパイルしてインストールする事ができます。


f:id:treeapps:20180424102046p:plain

検証環境

CentOS v7.0
Vagrant
iMac

という仮想環境で動作確認しています。

Githubからダウンロードする

最小限のインストール

以下をrootユーザで実行して下さい。

#!/bin/sh
yum remove -y git
yum install -y gcc gcc-c++ autoconf automake kernel-devel ncurses-devel gettext zlib-devel curl-devel perl-ExtUtils-MakeMaker openssl-devel
cd /usr/local/src
wget https://github.com/git/git/archive/master.zip
unzip -q master.zip && cd git-master
make configure
./configure --prefix=/usr/local
make all
make install
rm -rf ../git-master

初期インストールされているgitをアンインストールしてから依存ライブラリをインストールし、ソースからコンパイルする事でインストールします。

フルセットでインストールする

html等のdocs込みのフルセットでインストールする場合は以下です。
こちらもrootユーザで実行して下さい。

#!/bin/sh
yum remove -y git
yum install -y gcc gcc-c++ autoconf automake kernel-devel ncurses-devel gettext zlib-devel curl-devel perl-ExtUtils-MakeMaker asciidoc xmlto openssl-devel
cd /usr/local/src
wget https://github.com/git/git/archive/master.zip
unzip -q master.zip && cd git-master
make configure
./configure --prefix=/usr/local
make all doc
make install install-doc install-html
rm -rf git-master

おまけ:kernel.orgからダウンロードする

こちらはkernel.orgからバージョンを指定してインストールする場合です。

kernel.orgの場合は最新バージョンを自分で調べる必要があるので、スクリプトを駆使して頑張って取得する必要があります。

#!/bin/sh
# gitのDLディレクトリ
gitDirUrl="https://www.kernel.org/pub/software/scm/git/"
# gitのアーカイブファイル名
gitArchiveName=`curl $gitDirUrl | egrep 'git-[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | tail -1 | sed -r 's/^.+href="([^"]+)".+$/\1/'`
# gitのバージョン(gitのオフィシャルの番号とは異なるので注意)
gitVersion=`echo $gitArchiveName | sed -e "s/git-\([0-9].[0-9].[0-9]\).tar.gz/\1/g"`
# gitアーカイブを解凍した時のディレクトリ名
gitDirName="git-$gitVersion"
# gitの最新バージョンのダウンロードURL
latestGitUrl="$gitDirUrl$gitArchiveName"

yum remove -y git
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils perl-ExtUtils-MakeMaker

cd /usr/local/src
wget $latestGitUrl
tar zxvf $gitArchiveName
cd $gitDirName
./configure --prefix=/usr/local
make prefix=/usr/local all
make prefix=/usr/local install
cd -
rm -rf $gitDirName

特に理由がなければこちらではなくGithubからソースDL→コンパイル→インストール、の方がいいかと思います。

雑感

ちなみにこれらの使い道ですが、通常はchefやansibleで環境を構築すると思いますが、chef・ansibleのサーバを構築する時のプロビジョニングで使用する事を目的としています。

gitのバージョンアップの速度が想像以上に速く、常に最新バージョンをインストールしておきたいですね。特に、サーバの環境構築時のソフトウェアのインストールにはgitが必須になる場合が多いので、益々最新版gitのインストール機会は増えそうです。


アリスとボブのGit入門レッスン

アリスとボブのGit入門レッスン

Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール Web制作者のための教科書シリーズ

Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール Web制作者のための教科書シリーズ

開発効率をUPする Git逆引き入門

開発効率をUPする Git逆引き入門

  • 作者: 松下雅和,船ヶ山慶,平木聡,土橋林太郎,三上丈晴
  • 出版社/メーカー: シーアンドアール研究所
  • 発売日: 2014/04/09
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (6件) を見る