zoukankan      html  css  js  c++  java
  • 解决 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
    

    完成

  • 相关阅读:
    蓝桥杯--算法训练 区间k大数查询
    vijos1782:借教室
    vijos1779国王游戏
    C++大数模板
    HDU1042(N!:设4为基数)
    HDU1026(延时迷宫:BFS+优先队列)
    POJ3984(迷宫问题)
    HDU3018:Ant Trip(欧拉回路)
    HDU5438:Ponds(拓扑排序)
    2008北航:字符串匹配
  • 原文地址:https://www.cnblogs.com/debugzhang/p/14603604.html
Copyright © 2011-2022 走看看