CentOS 7 编译 git

编译并安装 git

  1. 安装依赖:

    sudo yum install zlib-devel openssl-devel libcurl-devel expat-devel -y
    
  2. 进入 mirrors.edge.kernel.org 下载 git 源码压缩包。

  3. 解压并进入源码包。

  4. 运行编译命令:

    make prefix=$HOME/.local -j$(nproc)
    make prefix=$HOME/.local install
    

Troubleshooting

‘CURLOPT_PROXYHEADER’ undeclared

In file included from /usr/include/curl/curl.h:2251:0,
                 from git-curl-compat.h:3,
                 from http.c:4:
http.c: In function ‘set_proxyauth_name_password’:
http.c:655:28: error: ‘CURLOPT_PROXYHEADER’ undeclared (first use in this function)
   curl_easy_setopt(result, CURLOPT_PROXYHEADER,
                            ^
http.c:655:28: note: each undeclared identifier is reported only once for each function it appears in
make: *** [http.o] Error 1

这个错误表明编译器找不到 CURLOPT_PROXYHEADER 这个宏。CURLOPT_PROXYHEADERlibcurl 7.37.0 及之后版本中引入的。如果你的系统上的 libcurl 的版本低于此版本,就会出现这个错误。

检查当前 libcurl 版本:

curl --version

如果 libcurl 版本低于 7.37.0,则需要升级。CentOS 7 官方支持的最新版本只有 curl 7.29.0,因此我们需要从源码编译安装最新版的 libcurl

  1. 前往 curl.se 下载源码压缩包。

  2. 安装依赖 libpsl

    sudo yum install epel-release         # 安装 EPEL 仓库
    sudo yum install libpsl libpsl-devel  # 安装 libpsl
    

    EPEL(Extra Packages for Enterprise Linux)仓库为 CentOS 提供了许多额外的软件包,其中包含 libpsl。

  3. 解压并进入源码包,编译并安装:

    ./configure --with-openssl
    make -j$(nproc)
    sudo make install
    
  4. 设置 PKG_CONFIG_PATHLD_LIBRARY_PATH 以确保编译器和链接器使用我们编译的 libcurl 版本:

    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
    export LD_LIBRARY_PATH=/usr/local/lib
    

参考:curl/GIT-INFO.md

storage size of ‘tz’ isn’t known

t/unit-tests/clar/clar.c: In function ‘clar_time_now’:
t/unit-tests/clar/clar.c:274:18: error: storage size of ‘tz’ isn’t known
  struct timezone tz;
                  ^

这个问题是我在编译 git-2.47.0 时遇到的,当时并没有解决。不过通过降低 git 版本可以解决这个问题。我成功编译并安装的版本为 git-2.26.2

参考:How to install Git on CentOS 7 | Globo.Tech

posted @ 2024-11-03 23:42  Undefined443  阅读(56)  评论(0编辑  收藏  举报