あまりにも毎回忘れるのでスクリプトを作りました。
結論
以下のようにバージョン名を指定してGitをインストールできるプログラムを公開しました。
リポジトリ:Polarbear08/centos-git-installer
# ./installer.sh 2.29.2
詳細はREADMEを参照してください。
モチベーション
- Gitは時々脆弱性が発表されてアップデートを促してくる割にはパッケージマネージャでは最新版が入らない
- 最新版を入れるためにソースからビルドする方法を毎回検索していてよろしくない
- 多分探せば類似リポジトリはあるけれどシェルスクリプトの練習をしたい
スクリプトの内容
installer.sh
#!/bin/bash
# verify input
VERSION=$1
if [[ $VERSION =~ [1-9]+\.[0-9]+\.[0-9] ]]; then
GIT_DIR=git-$VERSION
GIT_TAR=$GIT_DIR.tar.gz
URL="https://mirrors.edge.kernel.org/pub/software/scm/git/$GIT_TAR"
else
echo -e "Usage:\t $0 <VERSION>"
echo -e "e.g.)\t $0 2.29.2"
exit 1
fi
# install wget for downloading git
yum install -y wget
# confirm installation
wget -q --spider $URL
if [ $? = 0 ]; then
echo "install git version $VERSION"
else
echo "something seems wrong with URL: $URL"
exit 1
fi
# install dependencies
yum install -y \
curl-devel \
expat-devel \
gettext-devel \
openssl-devel \
perl-devel \
zlib-devel \
gcc \
make
# download and install git
mkdir -p /usr/local/src
cd /usr/local/src
wget https://mirrors.edge.kernel.org/pub/software/scm/git/${GIT_TAR}
tar xf ${GIT_TAR}
rm -f ${GIT_TAR}
cd ${GIT_DIR}
make prefix=/usr/local all
make prefix=/usr/local install
# completion notice
git version > /dev/null && echo "$(git version) was successfully installed"
文字コードで変なエラー踏んだら嫌なのでASCII文字だけにしています。
参考
-
セマンティック バージョニング 2.0.0
セマンティックバージョニングに従ったバージョン名を識別する正規表現が記載されています。
今回はそんないかついパターンは必要なかったですが参考にしました。 -
Gitのインストール
公式ドキュメントです。gitのビルドに必要な依存関係が示されています。gccとmakeは載ってないんですが必要でした。DockerHubのcentosイメージを使ったため普通はデフォルトで入っているパッケージが入っていなかったのかもしれません。