在Ubuntu上使用git clone失败问题解决
最近需要查看一些开源项目源码,在通过HTTPS方式从github上clone代码的时候发现一些问题,例如:运行
Git clone https://github.com/repoA/projectA时clone失败,报告下面几种错误:
或者:
error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
或者:
fatal: unable to access ‘https://github.com/repoA/projectA/’: gnutls_handshake() failed: Error in the pull function.
通过修改git配置参数http.sslVerify、http.postBuffer并不能修复问题。
比较奇怪的是,这个问题只在Ubuntu OS上出现,分配尝试了如下版本:
Ubuntu 16.04 | git 2.7.4 |
Ubuntu 18.04 | git 2.17.1 |
Ubuntu 19.10 | git 2.20.1 |
问题应该发生在gnutls模块上。通过重新构建git安装包,替换gnutls为openssl可以修改上述问题。修改步骤如下:
1、 安装软件包依赖组件:# apt-get install build-essential fakeroot dpkg-dev
2、 创建子路径并进入:# mkdir git-openssl && cd git-openssl
3、 获取git源码:# apt-get source git
4、 获取git组件编译依赖资源:# apt-get build-dep git
5、 安装libcurl4-openssl-dev:# apt-get install libcurl4-openssl-dev
6、 修改git安装包配置文件
a. 修改./debian/control文件,修改“Build-Depens”section,替换libcurl4-gnutls-dev为lincurl4-openssl-dev,如图:
b. 修改./debian/rules文件,删除TEST=test,这样可以大大缩短git安装包构建时间
7、 构建git安装包:# dpkg-buildpackage -rfakeroot –b [-uc -us]
8、 等待几分钟,安装新构建出来的git安装包,问题解决:
# sudo dpkg -i git_2.17.0-1ubuntu1_amd64.deb
再次运行命令,git clone https://github.com/repoA/projectA,正常clone源码。
这个问题在上述Ubuntu版本验证通过。
- 点赞
- 收藏
- 关注作者
评论(0)