😗
Docker 上で Git をビルドしてみた話
はじめに
これまで、ライブラリをインストールするときはパッケージ管理システムにお世話になっていましたが、ある時に git からソースコードを直接取得して管理するという機会がありました。
そこで、ライブラリを直接ビルドしてみるということに興味を持ち docker 上でやってみることにしました。
備忘録として起こったエラーとエラー対処法も併せて残しています🚒
環境
macOS 14.0 (23A344)
Docker version 24.0.6, build ed223bc
手順
1. Docker のコンテナを用意
とりあえず、 ubuntu のイメージを引っ張ってきます
docker pull ubuntu:latest
引っ張ってきた ubuntu イメージをもとに、コンテナを作成します
docker run -it --name git-build ubuntu
curl でソースファイルを落としたいので、まず curl を使えるようにします。
あと、この状態ではビルド時に必要なパッケージが入っていないので build-essential
もインストールしておきます。
$ apt-get update
$ apt-get install curl
$ apt-get install build-essential
2. コンテナ内で git をビルドする
公式に書かれているソースからのインストールの手順をもとに行います。
はじめに、ソースファイルをダウンロードします。
$ curl -LO https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
$ tar zxvf git-2.9.5.tar.gz
$ cd git-2.9.5/
ここからビルドしていきます。
$ make configure
GIT_VERSION = 2.9.5
GEN configure
/bin/sh: 1: autoconf: not found
make: *** [Makefile:1874: configure] Error 127
autoconf
をインストールして、もう一度 make configure
します
$ apt-get install autoconf
$ ./configure --prefix=/usr/local
$ make all doc info
* new build flags
CC credential-store.o
In file included from credential-store.c:1:
cache.h:40:10: fatal error: zlib.h: No such file or directory
40 | #include <zlib.h>
| ^~~~~~~~
compilation terminated.
make: *** [Makefile:1944: credential-store.o] Error 1
libz
を入れます
$ apt-get install libz-dev
$ make all doc info
...
BUILTIN git-whatchanged
SUBDIR git-gui
GITGUI_VERSION = 0.20.GITGUI
* new locations or Tcl/Tk interpreter
GEN git-gui
INDEX lib/
* tclsh failed; using unoptimized loading
MSGFMT po/bg.msg make[1]: *** [Makefile:250: po/bg.msg] Error 127
make: *** [Makefile:1663: all] Error 2
gettext
を追加します
$ apt-get install gettext
残りの対応
$ make install install-doc install-html install-info
ここまで進めることができると、 git コマンドを参照することができるかと思います!🎉
$ cd ..
$ git --version
$ git version 2.9.5
ソースからインストールした場合は、Gitを使ってGitそのものをアップデートすることができるみたいです
git clone git://git.kernel.org/pub/scm/git/git.git
Discussion