git clone 始终失败并显示“无法发送HTTP请求”

4
在特定的主机上,我无法通过HTTPS克隆任何GitHub存储库。
git clone https://github.com/llvm/llvm-project.git
Cloning into 'llvm-project'...
fatal: unable to access 'https://github.com/llvm/llvm-project.git/': Failed sending HTTP request

我找到的所有类似问题都涉及 SSL 服务器证书验证失败 (例如 这里 或者 这里)。在strace命令下运行时,该命令会在失败之前搜索我的所有证书,但是http.sslVerify => false 的方法没有效果(就像上面的第二个问题一样)。

我已经重新安装了gitca-certificates软件包,但没有任何效果。

有没有人有想法?甚至建议如何诱导git告诉我发生了什么错误都将不胜感激。

4个回答

5

我曾经遇到过同样的问题,有另一种解决方案。我发布这个答案是因为这个问题在我所有的MX Linux盒子上同时出现了。在我的情况下,这是一个版本不匹配的问题,可以通过从这里获得的解决方案来解决。

# apt reinstall libcurl3-gnutls/stable 就可以解决问题。

建议为此启用debian/security apt repos。

编辑:请参见gpweb cgti的答案,以获取更深入和永久的解决方案。


4

我在 Debian Buster 上也遇到了同样的问题!

这个问题在这里有报告: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=987187

我的电脑也是这样的:

DEBIAN10$ apt policy curl:amd64 libcurl4:amd64 libcurl3-gnutls:amd64
curl:
  Instalado: 7.74.0-1.2~bpo10+1
  Candidato: 7.74.0-1.2~bpo10+1
  Tabela de versão:
 *** 7.74.0-1.2~bpo10+1 100
        100 http://deb.debian.org/debian buster-backports/main amd64 Packages
        100 /var/lib/dpkg/status
     7.64.0-4+deb10u2 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
        500 http://deb.debian.org/debian-security buster/updates/main amd64 Packages
libcurl4:
  Instalado: 7.74.0-1.2~bpo10+1
  Candidato: 7.74.0-1.2~bpo10+1
  Tabela de versão:
 *** 7.74.0-1.2~bpo10+1 100
        100 http://deb.debian.org/debian buster-backports/main amd64 Packages
        100 /var/lib/dpkg/status
     7.64.0-4+deb10u2 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
        500 http://deb.debian.org/debian-security buster/updates/main amd64 Packages
libcurl3-gnutls:
  Instalado: 7.64.0-4+deb10u2
  Candidato: 7.64.0-4+deb10u2
  Tabela de versão:
     7.74.0-1.2~bpo10+1 100
        100 http://deb.debian.org/debian buster-backports/main amd64 Packages
 *** 7.64.0-4+deb10u2 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
        500 http://deb.debian.org/debian-security buster/updates/main amd64 Packages
        100 /var/lib/dpkg/status

然后,我成功地完成了这个技巧!

DEBIAN10$ apt reinstall libcurl3-gnutls/stable

现在已经没问题了!(感谢@Cobalt)

更改后我的配置:

DEBIAN10$ apt policy curl:amd64 libcurl4:amd64 libcurl3-gnutls:amd64
curl:
  Instalado: 7.74.0-1.2~bpo10+1
  Candidato: 7.74.0-1.2~bpo10+1
  Tabela de versão:
 *** 7.74.0-1.2~bpo10+1 100
        100 http://deb.debian.org/debian buster-backports/main amd64 Packages
        100 /var/lib/dpkg/status
     7.64.0-4+deb10u2 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
        500 http://deb.debian.org/debian-security buster/updates/main amd64 Packages
libcurl4:
  Instalado: 7.74.0-1.2~bpo10+1
  Candidato: 7.74.0-1.2~bpo10+1
  Tabela de versão:
 *** 7.74.0-1.2~bpo10+1 100
        100 http://deb.debian.org/debian buster-backports/main amd64 Packages
        100 /var/lib/dpkg/status
     7.64.0-4+deb10u2 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
        500 http://deb.debian.org/debian-security buster/updates/main amd64 Packages
libcurl3-gnutls:
  Instalado: 7.64.0-4+deb10u2
  Candidato: 7.64.0-4+deb10u2
  Tabela de versão:
     7.74.0-1.2~bpo10+1 100
        100 http://deb.debian.org/debian buster-backports/main amd64 Packages
 *** 7.64.0-4+deb10u2 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
        500 http://deb.debian.org/debian-security buster/updates/main amd64 Packages
        100 /var/lib/dpkg/status


此外,将以下内容添加到/etc/apt/preferences.d/99debian-backports文件中,以避免在下次升级时出现问题!
/etc/apt/preferences.d/99debian-backports
Package: *
Pin: release a=buster-backports
Pin-Priority: 900

Package: libcurl3-gnutls:amd64
Pin: release a=stable
Pin-Priority: 901

1
- gpweb cgti

4
如果你的 git version 足够新,你可以使用 trace2 来显示 Git 正在尝试做什么:
GIT_TRACE2=1 git clone https://...
GIT_TRACE2_EVENT=1 git clone https://...

我怀疑您的主机上使用了不同(旧)版本的libcurl,与其他版本不同,可能导致HTTP请求未发送。

您还可以在/usr/bin中检查git的动态库依赖关系:

ldd git

1
是的 - 成功了。罪魁祸首不是 libcurl,而是 libgnutlslibnettle 和/或 libhogweed 的某种组合 - 在某个时候我从源代码构建了它们并将它们安装到 /usr/local/lib 中 - 坏主机上的 git 从那里获取它们。将它们移开,运行 ldconfig,然后 git 又可以工作了。谢谢! - sp1ff

1
由于某些未知原因,之前的解决方案不再起作用。
现在,它似乎正常了。
sudo apt-get -t buster reinstall libcurl3-gnutls:amd64=7.64.0-4+deb10u2
sudo apt-mark hold libcurl3-gnutls

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接