CentOS 7 编译 git
编译并安装 git
-
安装依赖:
sudo yum install zlib-devel openssl-devel libcurl-devel expat-devel -y
-
进入 mirrors.edge.kernel.org 下载 git 源码压缩包。
-
解压并进入源码包。
-
运行编译命令:
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_PROXYHEADER
是 libcurl 7.37.0
及之后版本中引入的。如果你的系统上的 libcurl
的版本低于此版本,就会出现这个错误。
检查当前 libcurl
版本:
curl --version
如果 libcurl
版本低于 7.37.0
,则需要升级。CentOS 7 官方支持的最新版本只有 curl 7.29.0
,因此我们需要从源码编译安装最新版的 libcurl
。
-
前往 curl.se 下载源码压缩包。
-
安装依赖
libpsl
:sudo yum install epel-release # 安装 EPEL 仓库 sudo yum install libpsl libpsl-devel # 安装 libpsl
EPEL(Extra Packages for Enterprise Linux)仓库为 CentOS 提供了许多额外的软件包,其中包含 libpsl。
-
解压并进入源码包,编译并安装:
./configure --with-openssl make -j$(nproc) sudo make install
-
设置
PKG_CONFIG_PATH
和LD_LIBRARY_PATH
以确保编译器和链接器使用我们编译的libcurl
版本:export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig export LD_LIBRARY_PATH=/usr/local/lib
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。