Git 官方信息

  • Git 官方源码安装文档

  • Download Git for Linux and Unix

  • Git 源码包下载地址

Git 编译安装

# 安装依赖包
yum install dh-autoreconf curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel nss -y

tar -zxf git-2.0.0.tar.gz
cd git-2.0.0
make configure
./configure --prefix=/usr/local/git2
make
make install

常见错误和解决方法

一、系统包含多个版本依赖库,导致编译时引用冲突

场景描述: git 在编译时需要依赖 curl 相关库,笔者在编译的主机上之前安装过 anaconda ,里面包含新版本的 curl 和相关库,并且存在于 PATH 环境变量中,在 ./configure 的时候,会去 anaconda 里面找相关依赖库,而不去系统库找。 因此系统上我安装了 curl,curl-devel 也无济于事。 而 anaconda 里面的库与编译 git 相关依赖不兼容,导致编译失败。 同时报出库依赖冲突的错误。

解决方法: 笔者通过手动在当前终端下,设置 PATH 环境变量,去除 anaconda 相关的路径,只保留系统默认的。 让 git 在编译时只能去系统库下面找相关依赖,避免依赖冲突。

# 之前,包含 anaconda 环境变量
echo $PATH
/home/anaconda3/bin:/home/anaconda3/condabin:/usr/local/subversion/bin/:/usr/lib64/qt-3.3/bin:/usr/local/git2/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

# 手动在当前终端设置 PATH
export PATH=/usr/local/subversion/bin/:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

二、fatal: HTTP request failed

场景描述: 使用 git clone 获取 github 的代码时,出现如下错误。

error:  while accessing https://github.com/lib/pq/info/refs
fatal: HTTP request failed

解决方法: 原因是 Centos 自带的 git 版本太低,需要更新 git。 参考本文,编译安装。

三、git fatal: Unable to find remote helper for 'https'

场景描述: 编译安装完 git 之后,使用的时候出现该错误。

解决方法: 出现该问题的原因是在编译 git 时,curl,curl-devel 相关依赖没有正确加载,需要检查编译步骤,确保安装了curl,curl-devel 相关库,重新编译。

四、SSL connect error

场景描述: git clone 出错,SSL connect error

解决方法: 原因是缺少相应的库安装上即可,可以在编译时就安装上。

yum install -y nss curl libcurl