AI智能
改变未来

解决 git 同步错误 gnutls_handshake() failed

GitHub: https://github.com/storagezhang

Emai: debugzhang@163.com

华为云社区: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 LTSLinux Ubuntu 4.15.0-54-generic #58-Ubuntu SMP Mon Jun 24 10:55:24 UTC 2019 x86_64 x86_64 x86_64 GNU/LinuxIntel(R) Xeon(R) CPU E5-26xx v4

经过分析,问题应该在

gnutls

模块上。

该错误可以通过从源码构建 git 安装包,并将

gnutls

替换为

openssl

解决。

步骤如下:

# 安装软件包依赖sudo apt-get install -y build-essential fakeroot dpkg-devsudo apt-get -y build-dep gitsudo apt-get install -y libcurl4-openssl-dev# 创建目录mkdir git-opensslcd git-openssl# 获取 git 源码apt-get source gitcd git-*# 修改 git 安装包配置文件# 将 libcurl4-gnutls-dev 替换为 libcurl4-openssl-devsed -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

完成

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 解决 git 同步错误 gnutls_handshake() failed