【问题标题】:git - Protocol https not supported or disabled in libcurlgit - libcurl 中不支持或禁用协议 https
【发布时间】:2020-01-22 02:15:15
【问题描述】:

由于以下错误,我无法在我的 CentOS 7 中使用 git clone/push 等:

[wsx@localhost ~]$ git clone https://github.com/ShixiangWang/metawho
Cloning into 'metawho'...
fatal: unable to access 'https://github.com/ShixiangWang/metawho/': Protocol https not supported or disabled in libcurl

我尝试阅读互联网上的许多博文(包括stackoverflow)但仍然无法解决。

我尝试升级 curl 版本,但没有成功。

奇怪的是https确实被启用了。

[wsx@localhost ~]$ curl -V
curl 7.64.1 (x86_64-conda_cos6-linux-gnu) libcurl/7.64.1 OpenSSL/1.1.1 zlib/1.2.11 libssh2/1.8.2
Release-Date: 2019-03-27
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS GSS-API HTTPS-proxy IPv6 Kerberos Largefile libz NTLM NTLM_WB SPNEGO SSL TLS-SRP UnixSockets

[wsx@localhost ~]$ git --version
git version 2.9.5

这困扰了我很多天,我对git和curl/libcurl知之甚少,希望有人知道如何解决这个问题并帮助我。

这不是重复的问题。提前致谢。


最好的,

世象

更新

[wsx@localhost ~]$ ldd $(which curl)
        linux-vdso.so.1 =>  (0x00007ffccfd81000)
        libcurl.so.4 => /opt/anaconda3/bin/../lib/libcurl.so.4 (0x00007f064b209000)
        libz.so.1 => /opt/anaconda3/bin/../lib/libz.so.1 (0x00007f064b1e9000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f064aea2000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f064ac86000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f064a8b8000)
        libssh2.so.1 => /opt/anaconda3/bin/../lib/./libssh2.so.1 (0x00007f064b199000)
        libssl.so.1.1 => /opt/anaconda3/bin/../lib/./libssl.so.1.1 (0x00007f064b100000)
        libcrypto.so.1.1 => /opt/anaconda3/bin/../lib/./libcrypto.so.1.1 (0x00007f064a5bf000)
        libgssapi_krb5.so.2 => /opt/anaconda3/bin/../lib/./libgssapi_krb5.so.2 (0x00007f064a570000)
        libkrb5.so.3 => /opt/anaconda3/bin/../lib/./libkrb5.so.3 (0x00007f064a494000)
        libk5crypto.so.3 => /opt/anaconda3/bin/../lib/./libk5crypto.so.3 (0x00007f064b0e0000)
        libcom_err.so.3 => /opt/anaconda3/bin/../lib/./libcom_err.so.3 (0x00007f064b0da000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f064b0aa000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f064a290000)
        libkrb5support.so.0 => /opt/anaconda3/bin/../lib/././libkrb5support.so.0 (0x00007f064a281000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f064a068000)

更新

[wsx@localhost ~]$ echo $LD_LIBRARY_PATH
/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/runtime/glnxa64:
/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/bin/glnxa64:
/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/sys/os/glnxa64:
/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/runtime/glnxa64:
/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/bin/glnxa64:
/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/sys/os/glnxa64:
/home/public/R/R-base/lib64/R/lib::/lib:/usr/local/lib64:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/lib/amd64/server

我还想告诉你,我只是将git cloneroot 用户一起使用,它有效,rootwsx 使用不同的ldd。所以问题可能是由于一些错误的操作引起的。希望这可能会有所帮助。

[root@localhost ~]# ldd $(which curl)
    linux-vdso.so.1 =>  (0x00007ffc593cc000)
    libcurl.so.4 => /lib64/libcurl.so.4 (0x00007f466f5d0000)
    libmetalink.so.3 => /lib64/libmetalink.so.3 (0x00007f466f3c0000)
    libssl3.so => /lib64/libssl3.so (0x00007f466f167000)
    libsmime3.so => /lib64/libsmime3.so (0x00007f466ef3f000)
    libnss3.so => /lib64/libnss3.so (0x00007f466ec10000)
    libnssutil3.so => /lib64/libnssutil3.so (0x00007f466e9e0000)
    libplds4.so => /lib64/libplds4.so (0x00007f466e7dc000)
    libplc4.so => /lib64/libplc4.so (0x00007f466e5d7000)
    libnspr4.so => /lib64/libnspr4.so (0x00007f466e399000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f466e17d000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f466df79000)
    libz.so.1 => /lib64/libz.so.1 (0x00007f466dd63000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f466d995000)
    libnghttp2.so.14 => /lib64/libnghttp2.so.14 (0x00007f466d76e000)
    libssh2.so.1 => /lib64/libssh2.so.1 (0x00007f466d534000)
    libpsl.so.0 => /lib64/libpsl.so.0 (0x00007f466d2bc000)
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f466d06f000)
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f466cd86000)
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f466cb53000)
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f466c94f000)
    libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007f466c6fa000)
    liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007f466c4eb000)
    libexpat.so.1 => /lib64/libexpat.so.1 (0x00007f466c2c1000)
    librt.so.1 => /lib64/librt.so.1 (0x00007f466c0b9000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f466f85d000)
    libssl.so.10 => /lib64/libssl.so.10 (0x00007f466be47000)
    libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f466b9e4000)
    libicuuc.so.50 => /lib64/libicuuc.so.50 (0x00007f466b66b000)
    libicudata.so.50 => /lib64/libicudata.so.50 (0x00007f466a098000)
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f4669e88000)
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f4669c84000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f4669a6b000)
    libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007f466984e000)
    libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f466f915000)
    libm.so.6 => /lib64/libm.so.6 (0x00007f466954c000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f4669336000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f466910f000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f4668ed8000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f4668c76000)
    libfreebl3.so => /lib64/libfreebl3.so (0x00007f4668a73000)

我怎样才能把它改回来?


已解决

@VonC 感谢您的回复和耐心,export LD_LIBRARY_PATH=/lib64:/opt/anaconda3/bin/lib:${LD_LIBRARY_PATH} 有效。但是,我仍然很困惑,因为 libcurl.so 没有改变

[wsx@localhost ~]$ git clone https://github.com/ShixiangWang/metawho
Cloning into 'metawho'...
remote: Enumerating objects: 145, done.
remote: Counting objects: 100% (145/145), done.
remote: Compressing objects: 100% (80/80), done.
remote: Total 235 (delta 68), reused 126 (delta 51), pack-reused 90
Receiving objects: 100% (235/235), 850.89 KiB | 39.00 KiB/s, done.
Resolving deltas: 100% (99/99), done.
Checking connectivity... done.
[wsx@localhost ~]$ ldd $(which curl)
    linux-vdso.so.1 =>  (0x00007ffc348db000)
    libcurl.so.4 => /opt/anaconda3/bin/../lib/libcurl.so.4 (0x00007f9da54e9000)
    libz.so.1 => /opt/anaconda3/bin/../lib/libz.so.1 (0x00007f9da54c8000)
    librt.so.1 => /lib64/librt.so.1 (0x00007f9da5181000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f9da4f65000)
    libc.so.6 => /lib64/libc.so.6 (0x00007f9da4b97000)
    libssh2.so.1 => /opt/anaconda3/bin/../lib/./libssh2.so.1 (0x00007f9da5494000)
    libssl.so.1.1 => /opt/anaconda3/bin/../lib/./libssl.so.1.1 (0x00007f9da53fc000)
    libcrypto.so.1.1 => /opt/anaconda3/bin/../lib/./libcrypto.so.1.1 (0x00007f9da489e000)
    libgssapi_krb5.so.2 => /opt/anaconda3/bin/../lib/./libgssapi_krb5.so.2 (0x00007f9da53ac000)
    libkrb5.so.3 => /opt/anaconda3/bin/../lib/./libkrb5.so.3 (0x00007f9da47c2000)
    libk5crypto.so.3 => /opt/anaconda3/bin/../lib/./libk5crypto.so.3 (0x00007f9da47a3000)
    libcom_err.so.3 => /opt/anaconda3/bin/../lib/./libcom_err.so.3 (0x00007f9da479d000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f9da5389000)
    libdl.so.2 => /lib64/libdl.so.2 (0x00007f9da4598000)
    libkrb5support.so.0 => /opt/anaconda3/bin/../lib/././libkrb5support.so.0 (0x00007f9da4589000)
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f9da4370000)
[wsx@localhost ~]$ echo $LD_LIBRARY_PATH
/lib64:/opt/anaconda3/bin/lib:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/runtime/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/bin/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/sys/os/glnxa64:/opt/anaconda3/bin/lib:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/runtime/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/bin/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/sys/os/glnxa64:/opt/anaconda3/bin/lib:/opt/anaconda3/bin/lib:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/runtime/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/bin/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/sys/os/glnxa64::/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/runtime/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/bin/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/sys/os/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/runtime/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/bin/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/sys/os/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/runtime/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/bin/glnxa64:/public/tools/GISTIC2/MATLAB_Compiler_Runtime/v83/sys/os/glnxa64

如何理解为什么它现在有效?

【问题讨论】:

  • 您使用的是静态还是动态 curl 二进制文件?你从ldd $(which curl) 得到什么?
  • @hanshenrik 谢谢,我已经更新了输出,请看一下。 :)
  • 不知道anaconda 是什么,但您似乎使用的是anaconda 编译的curl?想知道git是否使用相同的libcurl,运行ldd $(which git)
  • 您能否编辑您的问题以包含echo $LD_LIBRARY_PATH 的输出?
  • @bk2204 当然,我已经更新了这个。我总结了输出以便更好地阅读。

标签: git curl centos7


【解决方案1】:

Git 可以是compiled without curl,例如使用 wget。

seen here, an ldd on git 可以显示运行时二进制依赖项。如果您没有看到 libcurl,这将解释错误消息。

尝试在 CentOS7 上安装 Git 2.19,它的依赖项中确实包含 libcurl。

使用annaconda3(开源包管理器、环境管理器以及 Python 和 R 编程语言的分发)curl,试试

export LD_LIBRARY_PATH=/opt/anaconda3/bin/lib:${LD_LIBRARY_PATH}

或者你可以试试compile it from sources on CentOS

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
cd /usr/src
wget https://www.kernel.org/pub/software/scm/git/git-2.23.0.tar.gz
tar xzf git-2.23.0.tar.gz
cd git-2.21.0
make prefix=/usr/local/git all
make prefix=/usr/local/git install
echo "export PATH=/usr/local/git/bin:$PATH" >> /etc/bashrc
source /etc/bashrc

【讨论】:

  • 什么?我从来没有听说过 -a 开关 ldd,你在说什么 ldd 实现? GNU ldd 不支持-a,OpenBSD ldd 不支持-a,Cygwin ldd 不支持-a,哪个实现支持?
  • @hanshenrik 同意:没有 -a 选项。我已经相应地编辑了答案,并将链接更改为一个不太容易混淆的示例。
  • 谢谢。请查看已解决,我无法将消息放在评论中。
猜你喜欢
  • 2015-03-16
  • 2014-03-05
  • 2019-08-06
  • 2012-03-24
  • 2017-01-10
  • 2013-03-11
  • 2017-09-14
  • 2017-09-08
  • 2020-04-09
相关资源
最近更新 更多