如何在libcurl中启用https支持?

时间:2013-09-25 21:11:27

标签: git libcurl homebrew

当我尝试$ brew update时,我收到错误:

error: Protocol https not supported or disabled in libcurl while accessing https://github.com/mxcl/homebrew/info/refs?service=git-upload-pack

然而,当我$ curl --version时,我看到了:

curl 7.21.4 (x86_64-apple-darwin12.2.0) libcurl/7.21.4 OpenSSL/0.9.8y zlib/1.2.5 libidn/1.20
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp 
Features: IDN IPv6 Largefile NTLM SSL libz 

除非我遗漏了什么,否则对我来说这看起来不错。请注意,https列在协议列表中。

$ which curl会产生可疑的回复:

/usr/local/php5/bin/curl

嗯...也许brew正在使用不同的curl(就像/usr/bin/curl处的$ /usr/bin/curl --version。我们来看看:

curl 7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8y zlib/1.2.5 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz

curl

好吧,它显然是https的不同安装,但它也在协议列表中列出https,并且也有OpenSSL信息。

顺便说一句:如果我尝试在我的计算机上使用git个网址与任何curl个回复网站,我会收到同样的错误。

问题:

  1. 如何确定brew正在使用的https的路径?
  2. 如何在libcurl中启用对libcurl.4.dylib的支持?
  3. 更新:我可以通过以下deltheil方法确定git(和brew)正在使用/usr/lib/libcurl.4.dylib (compatibility version 6.0.0, current version 6.1.0) 的路径。路径是:

    $ brew install curl --with-libssh2
    

    所以我尝试了这个:

    /usr/local

    幸运的是,curl可以在非SSL URI上使用,所以它实际上是insstall。它没有符号链接到$ cd /usr/lib $ mv libcurl.4.dylib libcurl.4.dylib.bk $ ln -s /usr/local/Cellar/curl/7.30.0/lib/libcurl.4.dylib libcurl.4.dylib $ brew update ,但这对我很好(我认为)。所以我这样做了:

    error: Protocol https not supported or disabled in libcurl while accessing https://github.com/mxcl/homebrew/info/refs?service=git-upload-pack
    

    但它仍然给我这个错误:

    https

    所以现在问题专门变成:如何在libcurl中启用对{{1}}的支持?

3 个答案:

答案 0 :(得分:6)

  

如何确定brew正在使用的卷曲路径?

Homebrew使用/usr/bin/curl,即Mac OS X附带的版本,正如您所见here

话虽如此,正如您所说,您的问题可能与与git关联并用于http://https://的libcurl版本有关。

执行which git以确定您使用的版本(我的/usr/local下已安装)。

然后扫描使用的共享库:

$ otool -L /usr/local/git/libexec/git-core/git-http-push | grep curl
/usr/lib/libcurl.4.dylib

/usr/local/替换为与您的git对应的安装目录。

由于git执行程序使用的libcurl版本缺少HTTPS支持,因此会告诉您这个版本是什么以及它的安装位置。

答案 1 :(得分:2)

这对我有用:

重新安装curl并使用以下命令安装它(解压后):

$ ./configure --with-darwinssl    
$ make    
$ make test    
$ sudo make install

当您运行命令“curl --version”时,您会注意到https协议现在位于“协议”下。

遇到卷曲问题时可以引用的有用网站:https://curl.haxx.se/docs/install.html

答案 2 :(得分:0)

我在OSX上遇到过这个问题。问题是usr / local / bin中的重复curl和curl.config文件与usr / bin中的相同两个文件冲突。我删除了本地/ bin中的第一个集合,然后终端工作。