我正在开发一个关于Git的包装器,叫做 优雅的Git 并想让测试在多个Git版本上运行。由于项目使用Docker容器进行测试,我准备了一个从源头安装Git的Docker文件,得到了奇怪的结果。
apk add git
~ 28Mb它反映了每个创建的二进制文件的大小。
Build version:
18.6M /git/usr/libexec/git-core/git
apk version:
2.4M /usr/libexec/git-core/git
有什么办法可以在构建Git时减小二进制文件的大小?
以下是 Docker文件 重现了这种行为。
ARG bashversion=3.2.57
FROM bash:${bashversion}
ARG gitversion=2.26.2
WORKDIR /git
RUN apk add --no-cache curl && \
curl --output git-${gitversion}.tar.gz \
https://mirrors.edge.kernel.org/pub/software/scm/git/git-${gitversion}.tar.gz && \
tar -xvzf git-${gitversion}.tar.gz && \
mkdir -p /git
RUN apk add --no-cache \
zlib-dev \
openssl-dev \
curl-dev \
expat-dev \
perl-dev \
python3-dev \
pcre2-dev \
asciidoc \
xmlto \
perl-error tcl tk make gcc g++
RUN cd git-${gitversion} && \
make prefix=/usr DESTDIR=/git NO_GETTEXT=YesPlease NO_REGEX=YesPlease ICONV_OMITS_BOM=Yes && \
make prefix=/usr DESTDIR=/git NO_GETTEXT=YesPlease NO_REGEX=YesPlease ICONV_OMITS_BOM=Yes install
RUN apk add --no-cache git && \
echo "Build version: " && \
du -ha /git/usr/libexec/git-core/git | sort && \
echo "apk version: " && \
du -ha /usr/libexec/git-core/git | sort
我猜想apk版本中不存在调试数据。如果你运行 make strip
之前 make install
这将可能减少可执行文件的大小。