解決 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 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

完成


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM