解决 git 同步错误 gnutls_handshake() failed

针对在Ubuntu 18.04服务器上使用git访问GitHub时遇到的gnutls_handshake错误,解决方案是通过源码构建git安装包,将gnutls替换为openssl。首先安装依赖,然后创建目录,获取git源码,修改配置文件,构建并安装带有openssl的git安装包,最后清理构建文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接 https://bbs.huaweicloud.com/blogs/250281

今天在服务器上使用 git 访问 GitHub 时,出现了如下两种错误:

gnutls_handshake() failed: Error in the pull function.
gnutls_handshake() failed: Error in the push function.

服务器配置:

Ubuntu 18.04.4 LTS
Linux Ubuntu 4.15.0-54-generic #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Intel(R) Xeon(R) CPU E5-26xx v4

经过分析,问题应该在 gnutls 模块上。

该错误可以通过从源码构建 git 安装包,并将 gnutls 替换为 openssl 解决。

步骤如下:

# 安装软件包依赖
sudo apt-get install -y build-essential fakeroot dpkg-dev
sudo apt-get -y build-dep git
sudo apt-get install -y libcurl4-openssl-dev

# 创建目录
mkdir git-openssl
cd git-openssl

# 获取 git 源码
apt-get source git
cd git-*

# 修改 git 安装包配置文件
# 将 libcurl4-gnutls-dev 替换为 libcurl4-openssl-dev
sed -i -e 's/libcurl4-gnutls-dev/libcurl4-openssl-dev/g' ./debian/control
# 删除 TEST=test,缩短安装包构建时间
sed -i -- '/TEST\s*=\s*test/d' ./debian/rules

# 构建安装包
sudo dpkg-buildpackage -rfakeroot -b

# 安装,git 版本号可能不一致
cd ../
sudo dpkg -i git_2.17.1-1ubuntu0.8_amd64.deb

# 清理
cd ../../
sudo rm -rf git-openssl

完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值