git clone 导致 gnutls_handshake 失败:收到了长度意外的 TLS 数据包

git clone 导致 gnutls_handshake 失败:收到了长度意外的 TLS 数据包

我正在运行 Ubuntu 12.04 和 git 1.7.9.5。

几天前,git 运行正常。看来 apache2 的乘客模块的安装或配置修改了一些必要的包或更改了其中一个使用的文件,现在git clone我尝试过的任何尝试都会导致:

error: gnutls_handshake() failed: A TLS packet with unexpected length was received. while accessing https://github.com/fnando/i18n-js.git/info/refs
fatal: HTTP request failed

尝试时我能找到的所有关于此错误的参考资料git clone都是过时的,并且似乎与 git 默认安装中的一个错误有关。我尝试了https://bugs.launchpad.net/ubuntu/+source/pycurl/+bug/926548但这不起作用;dpkg-source命令失败,因为pycurl_7.19.0-ubuntu3.dsc不存在。

我尝试删除并重新安装许多软件包,包括git、、curllibcurl3-gnutls,但libcurl4-openssl-dev没有任何变化 -git clone仍然因同样的错误而失败。

此时,我主要关心的是恢复使用git clone(以及由于潜在问题而最终失败的任何其他功能)。

答案1

我遇到了同样的问题,不得不针对 libcurl-openssl-v4 而不是 gnutls 重新编译 git。这可能与 git 服务器的路由有关,而且 gnutls 对此不太满意。

本网站上发布了有关如何执行此操作的先前分步解决方案,但我确实做了一些不同的事情并遇到了一些问题。

首先,我不建议使用 dpkg -i 作为安装包的方法来安装包,而是使用 gdebi-core 包中的 gdebi,因为它允许您安装包及其依赖项。

最重要的是,该解决方案中没有提到的一件事是将生成多个 *.deb 包,因此需要使用 gdebi-core。

其次,最后,请确保先安装 git-man 包,然后安装主包及其依赖项,由于某种原因,如果不先安装手册,该解决方案中列出的主包将无法使用 dpkg 或 gdebi 安装。

相关内容