# TL;dr 本文记录了在debian10下编译git-2.27.0.tar.gz ```bash docker run -it --rm debian:10 bash sed -i "s|deb.debian.org|mirrors.huaweicloud.com|g" /etc/apt/sources.list && \ sed -i "s|security.debian.org|mirrors.huaweicloud.com|g" /etc/apt/sources.list && \ apt-get clean && \ apt-get update apt install autoconf gcc make tcl gettext difference libexpat1-dev libcurl4-openssl-dev libssl-dev zlib1g-dev # copy https://github.com/bitnami/bitnami-docker-git/blob/master/2/debian-10/Dockerfile apt install acl ca-certificates curl gzip libc6 libcom-err2 libcurl4 libffi6 libgcrypt20 libgmp10 libgnutls30 libgpg-error0 libgssapi-krb5-2 libhogweed4 libidn2-0 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 libnettle6 libnghttp2-14 libp11-kit0 libpsl5 librtmp1 libsasl2-2 libssh2-1 libssl1.1 libtasn1-6 libunistring2 procps ssh sudo tar zlib1g # https://note.qidong.name/2020/04/compile-git/ # sudo apt install build-essential tcl-dev libssl libcurl4-openssl-dev gettext curl -fksSL -O https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.16.tar.gz curl -fksSL -O https://www.zlib.net/zlib-1.2.11.tar.gz curl -fksSL -O https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz curl -fksSL -O https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.27.0.tar.gz tar -xvf git-2.27.0.tar.gz cd git-2.27.0 autoconf ./configure \ --prefix=/usr/local/ \ --with-openssl \ --with-libpcre=../pcre-8.43/ \ --with-iconv=../libiconv-1.16/ \ --with-curl \ --with-expat make make install git --version git --exec-path curl -fksSL -O https://github.com/git-lfs/git-lfs/releases/download/v2.11.0/git-lfs-linux-amd64-v2.11.0.tar.gz tar -xvf git-lfs-linux-amd64-v2.11.0.tar.gz install git-lfs /usr/local/bin/git-lfs git lfs install # tar --directory "${directory}" --extract --gunzip --file "${base_name}.tar.gz" --no-same-owner --strip-components=2 "${base_name}/files/" ``` ```bash configure: Setting lib to 'lib' (the default) configure: Will try -pthread then -lpthread to enable POSIX Threads. configure: CHECKS for site configuration configure: Setting LIBPCREDIR to ../pcre-8.43 checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking how to run the C preprocessor... gcc -E checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for size_t... yes checking for working alloca.h... yes checking for alloca... yes configure: Setting ICONVDIR to ../libiconv-1.16 configure: Setting ZLIB_PATH to ../zlib-1.2.11 configure: CHECKS for programs checking whether we are using the GNU C compiler... (cached) yes checking whether gcc accepts -g... (cached) yes checking for gcc option to accept ISO C89... (cached) none needed checking for inline... inline checking if linker supports -R... no checking if linker supports -Wl,-rpath,... yes checking for gar... no checking for ar... ar checking for gtar... no checking for tar... tar checking for gnudiff... no checking for gdiff... no checking for diff... diff checking for asciidoc... no Using 'grep -a' for sane_grep configure: CHECKS for libraries checking for SHA1_Init in -lcrypto... yes checking for pcre2_config_8 in -lpcre2-8... no checking for curl_global_init in -lcurl... yes checking for curl-config... curl-config configure: Setting CURL_LDFLAGS to '-lcurl' checking for XML_ParserCreate in -lexpat... yes checking for iconv in -liconv... no checking for iconv in -lc... yes checking for deflateBound in -lz... no checking for socket in -lc... yes checking for inet_ntop... yes checking for inet_pton... yes checking for hstrerror... yes checking for basename in -lc... yes checking if libc contains libintl... yes checking libintl.h usability... yes checking libintl.h presence... yes checking for libintl.h... yes configure: CHECKS for header files checking sys/select.h usability... yes checking sys/select.h presence... yes checking for sys/select.h... yes checking poll.h usability... yes checking poll.h presence... yes checking for poll.h... yes checking sys/poll.h usability... yes checking sys/poll.h presence... yes checking for sys/poll.h... yes checking for inttypes.h... (cached) yes checking for old iconv()... no checking whether iconv omits bom for utf-16 and utf-32... no configure: CHECKS for typedefs, structures, and compiler characteristics checking for socklen_t... yes checking for struct itimerval... yes checking for struct stat.st_mtimespec.tv_nsec... no checking for struct stat.st_mtim.tv_nsec... yes checking for struct dirent.d_type... yes checking for struct passwd.pw_gecos... yes checking for struct sockaddr_storage... yes checking for struct addrinfo... yes checking for getaddrinfo... yes checking for library containing getaddrinfo... none required checking whether the platform regex supports REG_STARTEND... yes checking whether system succeeds to read fopen'ed directory... yes checking whether snprintf() and/or vsnprintf() return bogus value... no checking whether the platform uses typical file type bits... yes configure: CHECKS for library functions checking libgen.h usability... yes checking libgen.h presence... yes checking for libgen.h... yes checking paths.h usability... yes checking paths.h presence... yes checking for paths.h... yes checking libcharset.h usability... no checking libcharset.h presence... no checking for libcharset.h... no checking for strings.h... (cached) yes checking for locale_charset in -liconv... no checking for locale_charset in -lcharset... no checking for clock_gettime... yes checking for library containing clock_gettime... none required checking for CLOCK_MONOTONIC... yes checking for setitimer... yes checking for library containing setitimer... none required checking for strcasestr... yes checking for library containing strcasestr... none required checking for memmem... yes checking for library containing memmem... none required checking for strlcpy... no checking for uintmax_t... yes checking for strtoumax... yes checking for library containing strtoumax... none required checking for setenv... yes checking for library containing setenv... none required checking for unsetenv... yes checking for library containing unsetenv... none required checking for mkdtemp... yes checking for library containing mkdtemp... none required checking for initgroups... yes checking for library containing initgroups... none required checking for getdelim... yes checking for library containing getdelim... none required checking for BSD sysctl... no checking for POSIX Threads with ''... no checking for POSIX Threads with '-mt'... no checking for POSIX Threads with '-pthread'... yes configure: creating ./config.status config.status: creating config.mak.autogen config.status: executing config.mak.autogen commands ```