Redmine の公式の Docker イメージにインストールされている Git のバージョンが古かったので、最新にアップデートしました。
以下、Docker コンテナの中で作業を行います。
例えば、以下のようにして Docker コンテナに入ります。
docker exec -it redmine bash
Git のバージョンの確認
まずはインストールされている Git のバージョンを確認します。
# git --version
git version 2.1.4
現時点では、2.1.4
がインストールされていましたが、最新は 2.18.0
です。
Git の最新バージョンはこちらで確認できます。
ディストリビューションの把握
Redmine の Docker イメージのベースとなっている Linux ディストリビューションを把握します。
debian_version
というファイルがあったので、debian のようです。
# cat debian_version
8.10
Git のアップデート
apt-get
でアップデートしますが、試してもバージョンは変わりませんでした。
どうやら debian のリポジトリは古いそうなので、リポジトリを追加してアップデートを行います。
尚、add-apt-repository
が見つからないエラーが表示された場合、
bash: add-apt-repository: command not found
software-properties-common
というパッケージをインストールします。
尚、先に apt-get update
を行っていないと、apt-file
がインストールできませんでした。
ソースコードからインストールする
私の場合、上記の操作を行っても、バージョンが 2.1.4
から変わりませんでした。
仕方がないので、ソースコードをビルドしてからインストールします。
方法は以下で説明されています。
以下、細かい部分を補足します。
リポジトリのアップデート
まずはリポジトリのアップデートを行います。
> apt-get update
ソースコードのダウンロード
git で git のソースコードをダウンロードします。
> git clone https://github.com/git/git.git
> cd git
ビルド
公式に従って必要なライブラリをインストールします。
> apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
make がないのでインストールします。
> apt-get install make
公式の通りに make を実行しますが、以下のエラーが表示されました。
# make prefix=/usr/local all
GIT_VERSION = 2.18.0.129.ge333175
* new build flags
CC credential-store.o
/bin/sh: 1: cc: not found
Makefile:2261: recipe for target 'credential-store.o' failed
make: *** [credential-store.o] Error 127
公式とマシンが異なるので、インストールに必要なパッケージが異なっているのが原因のようです。
以下をインストールします。
> apt-get install gcc libextutils-makemaker-cpanfile-perl
再度 make を実行すればインストールできました。
> make prefix=/usr/local all
> make prefix=/usr/local install
尚、一度 docker コンテナを再起動しないと、git のバージョンが最新になっていませんでした。