解决 git 同步错误 gnutls_handshake() failed

debugzhang 发表于 2021/03/21 19:56:33 2021/03/21
【摘要】 今天在服务器上使用 git 访问 GitHub 时,出现了 gnutls_handshake() failed 错误,经过分析,问题应该在 gnutls 模块上。该错误可以通过从源码构建 git 安装包,并将 gnutls 替换为 openssl 解决。

GitHub: https://github.com/storagezhang

Emai: debugzhang@163.com


今天在服务器上使用 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

完成

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。