GnuTLS recv error (-110): The TLS connection was non-properly terminated

64.3k Views Asked by At

I'm preparing to install vim plugin by vundle, after I set the vimrc

set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

Plugin 'gmarik/Vundle.vim'
Plugin 'valloric/youcompleteme'

call vundle#end()

then I input :PluginInstall and get the error

  2 [2018-09-27 10:47:17] Plugin valloric/youcompleteme                                                | 18 " line enables syntax highlighting by default.
  3 [2018-09-27 10:47:17] $ git clone --recursive 'https://github.com/valloric/youcompleteme.git' '/roo| 19 syntax on;
    t/.vim/bundle/youcompleteme'                                                                       | 20 if has("syntax")
  4 [2018-09-27 10:47:17] > Cloning into '/root/.vim/bundle/youcompleteme'...                          | 21   syntax on
  5 [2018-09-27 10:47:17] > error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was| 22 endif
     non-properly terminated. 

and then I go to the directory ~/.vim/bundle and execute

git clone --recursive 'https://github.com/valloric/youcompleteme.git

and get this

Cloning into '~/.vim/bundle/youcompleteme'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 34431 (delta 4), reused 8 (delta 1), pack-reused 34416
Receiving objects: 100% (34431/34431), 32.58 MiB | 2.37 MiB/s, done.
error: RPC failed; curl 56 GnuTLS recv error (-110): The TLS connection was non-properly terminated.
Resolving deltas: 100% (12305/12305), done.

As this said, It seems the plugin have been downloaded despite the error. But I can't find the youcompleteme directory in fact.

I also try

git clone --recursive '[email protected]:Valloric/YouCompleteMe.git' '~/.vim/bundle/youcompleteme'

and get this

Cloning into '~/.vim/bundle/youcompleteme'...
ssh: connect to host github.com port 22: Connection timed out
fatal: Could not read from remote repository.

So how to solve this?

7

There are 7 best solutions below

8
On BEST ANSWER

Recompile and install git solve it finally, the steps are the following:

sudo apt-get install build-essential fakeroot dpkg-dev -y
sudo apt-get build-dep git -y
sudo apt-get install libcurl4-openssl-dev -y
cd ~
mkdir source-git
cd source-git/
apt-get source git
cd git-2.*.*/
sed -i -- 's/libcurl4-gnutls-dev/libcurl4-openssl-dev/' ./debian/control
sed -i -- '/TEST\s*=\s*test/d' ./debian/rules
dpkg-buildpackage -rfakeroot -b -uc -us
sudo dpkg -i ../git_*ubuntu*.deb

And not use -y is ok, -y just for skip inputting y. The result is:

Cloning into 'syntastic'...
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 18671 (delta 9), reused 16 (delta 5), pack-reused 18644
Receiving objects: 100% (18671/18671), 4.26 MiB | 701.00 KiB/s, done.
Resolving deltas: 100% (10572/10572), done.
Checking connectivity... done.
0
On

I found an other way to fix this issue when running CMake from Visual Studio and WSL through Ubuntu 18.04. I found the other way to upgrade GIT to last version here: https://itsfoss.com/install-git-ubuntu/

sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt install git

Even we still have the GnuTLS recv error (-110) after upgrade, the GIT operation doesn't fail anymore.

4
On

Here's a more up-to-date way of doing this. I am using Ubuntu 20.04 on WSL2 on Win10.

sudo apt remove git -y
sudo apt update && sudo apt upgrade

DEBIAN_FRONTEND=noninteractive

sudo apt install build-essential autoconf dh-autoreconf libcurl4-openssl-dev \
                 tcl-dev gettext asciidoc docbook2x install-info \
                 libexpat1-dev libz-dev -y

wget https://raw.githubusercontent.com/paul-nelson-baker/git-openssl-shellscript/master/compile-git-with-openssl.sh .

./compile-git-with-openssl.sh -skiptests
0
On

For some reason 'git pull' was giving this message over and over, 'git pull origin master' worked though

1
On

So how to solve this?

By checking if those errors persist during the next few hours.

GitHub status reports right now

We are investigating reports of elevated error rates.

And this could be a side-effect of their issues.

The other approach is making sure you are using the latest Git release, which the OP did by recompiling Git.

1
On

For anyone who may encounter the issue below on windows 10 wsl2 can fix with a following reference:

fakeroot, while creating message channels: Function not implemented
This may be due to a lack of SYSV IPC support. 

https://github.com/microsoft/WSL/issues/2465#issuecomment-377583291

sudo update-alternatives --set fakeroot /usr/bin/fakeroot-tcp
0
On

I found the solution https://stdworkflow.com/652/error-rpc-failed-curl-56-gnutls-recv-error-110-the-tls-connection-was-non-properly-terminated here, I am just copying the author's answer:

The problem seems to be a problem with Ubuntu gnutls_handshake Solution

recompile git

Use libcurl-openssl-dev to replace gnutls

Install the necessary dependencies and environment

sudo apt-get install build-essential fakeroot dpkg-dev

In case you are using Raspberry pi, you will have the local problem, you might fail to set local, just remember to put export LC_ALL=C in the .bashrc file, and do a reboot.

Create a directory to put the newly compiled git

mkdir ~/git-rectify

Get git source code

cd ~/git-rectify
sudo apt-get source git

Install git dependencies

sudo apt-get build-dep git

Install libcurl

sudo apt-get install libcurl4-openssl-dev

Enter the git directory, where the directory name depends on the version you installed

cd git-2.7.4/

Recompile git after modifying two files

vim ./debian/control # Modify libcurl4-gnutls-dev to libcurl4-openssl-dev
vim ./debian/rules # delete the entire line of TEST=test
sudo dpkg-buildpackage -rfakeroot -b

Go back to the previous directory and install the compiled installation package

cd .. # is in the ~/git-rectify directory
sudo dpkg -i git_2.7.4-0ubuntu0.4_amd64.deb

Source installation git Here is just a record of the steps to install git from the source code.

git clone https://github.com/git/git.git

Switch to the corresponding version tag

git checkout -b v2.22.0
sudo apt-get install libssl-dev

Install it according to the installation command described in the doc document.