Ubuntu使用Git报错

最近使用公司的开发机器(ubuntu系统), 执行git clone一直会出现如下错误:

1
error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated.

据说产生这个错误的原因, ubuntu上使用的https认证组件有问题, 使用如下步骤可以解决该问题.

大部分的内容参考自这篇博客,但是文章的步骤在公司的机器还是有一些问题,我会注明.

安装必要依赖

1
2
sudo apt-get install build-essential fakeroot dpkg-dev
sudo apt-get install libcurl4-openssl-dev

下载源码并重新编译安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建临时目录
mkdir ~/git-rectify
cd ~/git-rectify
# 下载源码
apt-get source git
# 安装依赖
apt-get build-dep git
# 进入源码目录
cd git-2*
# 修改配置文件
sed -i -- 's/libcurl4-gnutls-dev/libcurl4-openssl-dev/' ./debian/control
sed -i -- '/TEST\s*=\s*test/d' ./debian/rules
# 重新编译(注意要加入`-uc -us`,不然会出现`secret key not available`错误)
dpkg-buildpackage -rfakeroot -b -uc -us
# 返回上一级,重新安装
cd ..
dpkg -i git_2*.deb

锁住git不更新

1
2
# 如果不锁定, 下次更新git的时候, 会重新覆盖
sudo apt-mark hold git