vim GnuTLS接收错误(-110):TLS连接未正确终止

qrjkbowd  于 2022-11-11  发布在  其他
关注(0)|答案(7)|浏览(408)

我准备安装vundle的vim plugin,在我设置了vimrc之后

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

call vundle#begin()

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

call vundle#end()

然后输入:PluginInstall,得到错误

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.

然后我转到目录~/.vim/bundle并执行

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

然后得到这个

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.

正如this所说,尽管出现了错误,但似乎插件已经下载。但实际上我找不到youcompleteme目录。
我也试试

git clone --recursive 'git@github.com:Valloric/YouCompleteMe.git' '~/.vim/bundle/youcompleteme'

然后得到这个

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

那么如何解决这个问题呢?

9udxz4iz

9udxz4iz1#

最后重新编译并安装git solve it,步骤如下:

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

而不使用-y就可以了,-y只是为了跳过输入y .结果是:

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.
thigvfpy

thigvfpy2#

对于任何可能在Windows 10 WSL2上遇到以下问题的人,可以通过以下参考修复:

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
ghhaqwfi

ghhaqwfi3#

这里有一个更新的方法,我在Win10上的WSL2上使用Ubuntu 20.04。

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
a0zr77ik

a0zr77ik4#

那么如何解决这个问题呢?
通过检查这些错误在接下来的几个小时内是否仍然存在。
GitHub status立即报告
我们正在调查错误率升高的报告。
这可能是他们的问题的副作用。
另一种方法是确保您使用的是最新的Git发行版,OP通过重新编译Git做到了这一点。

jvlzgdj9

jvlzgdj95#

我在这里找到了解决https://stdworkflow.com/652/error-rpc-failed-curl-56-gnutls-recv-error-110-the-tls-connection-was-non-properly-terminated的办法,我只是抄袭了作者的答案:
这个问题似乎是Ubuntu gnutls_handshake解决方案的问题
重新编译git
使用libcurl-openssl-dev替换gnutls
安装必要的依赖项和环境

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

如果你使用的是Raspberry pi,你会遇到本地问题,你可能无法设置本地,只要记住把export LC_ALL=C放在.bashrc文件中,然后重新启动。
创建一个目录来放置新编译的git

mkdir ~/git-rectify

获取git源代码

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

安装git依赖项

sudo apt-get build-dep git

安装libcurl

sudo apt-get install libcurl4-openssl-dev

输入git目录,其中的目录名取决于您安装的版本

cd git-2.7.4/

修改两个文件后重新编译git

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

返回到上一个目录并安装已编译的安装包

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

源代码安装git这里只是一个从源代码安装git的步骤记录。

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

切换到相应的版本标记

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

按照doc文档中描述的安装命令进行安装。

qzlgjiam

qzlgjiam6#

由于某种原因'git pull'一遍又一遍地给出这个消息,'git pull origin master'虽然工作

nnsrf1az

nnsrf1az7#

我找到了另一种方法来解决这个问题,当从Visual Studio和WSL通过Ubuntu 18.04运行CMake时。我找到了另一种方法来将GIT升级到最新版本,请访问:https://itsfoss.com/install-git-ubuntu/

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

即使我们在升级后仍然有GnuTLS recv错误(-110),GIT操作也不会再失败。

相关问题