解决 git 同步错误 gnutls_handshake() failed
Posted adream307
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决 git 同步错误 gnutls_handshake() failed相关的知识,希望对你有一定的参考价值。
原文链接 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
完成
以上是关于解决 git 同步错误 gnutls_handshake() failed的主要内容,如果未能解决你的问题,请参考以下文章
解决 git 同步错误 gnutls_handshake() failed
解决 git 同步错误 gnutls_handshake() failed
解决 git 同步错误 gnutls_handshake() failed
git 服务器同步代码错误 error: insufficient permission for adding an object to repository database .git/object
Git 技术篇 - 同步代码到github失败,提示non-fast-forwarderror: failed to push some refs to问题解决方法,git pull的用法