When I try to $ brew update
I'm getting the error:
error: Protocol https not supported or disabled in libcurl while accessing https://github.com/mxcl/homebrew/info/refs?service=git-upload-pack
However, when I $ curl --version
, I see:
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
Unless I'm missing something, that looks good to me. Notice that https
is listed in the protocols list.
$ which curl
yields a suspicious response:
/usr/local/php5/bin/curl
Hmmmmm...maybe brew
is using a different curl
(like the one at /usr/bin/curl
). Let's see:
$ /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
Okay, it's obviously a different install of curl
, but it's also listing https
in the protocols list, and has the OpenSSL info there too.
BTW: I get the same error if I try to use an https
URL with any git
repo on my machine.
Questions:
curl
that brew
is using?https
in libcurl
?UPDATE: I was able to determine the path to libcurl.4.dylib
that git
(and brew
) are using by following deltheil's method below. The path is:
/usr/lib/libcurl.4.dylib (compatibility version 6.0.0, current version 6.1.0)
So I tried this:
$ brew install curl --with-libssh2
Luckily curl is available at a non-SSL URI, so it actually did insstall. It didn't symlink into /usr/local
, but that's fine with me (I think). So I did this:
$ 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
But it's still throwing me this error:
error: Protocol https not supported or disabled in libcurl while accessing https://github.com/mxcl/homebrew/info/refs?service=git-upload-pack
So now the question exclusively becomes: How do I enable support for https
in libcurl
?
libcurl supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, Kerberos, SPNEGO, HTTP form based upload, proxies, cookies, user+password authentication, file transfer resume, http proxy tunneling and more.
If you specify URL without protocol:// prefix, curl will attempt to guess what protocol you might want. It will then default to HTTP but try other protocols based on often-used host name prefixes.
How can I determine the path to the curl that brew is using?
Homebrew uses /usr/bin/curl
, i.e the version that ships with Mac OS X, as you can see here.
That being said, and as you precise, your problem is probably related to the version of libcurl that is linked with git
and used for http://
and https://
.
Perform a which git
to determine which is the version you are being used (mine is installed under /usr/local
).
Then scan the shared libraries used as follow:
$ otool -L /usr/local/git/libexec/git-core/git-http-push | grep curl
/usr/lib/libcurl.4.dylib
Replace /usr/local/
with the install directory that corresponds to your git
.
Since the libcurl version used by your git
exec lacks of HTTPS support, this will tell you what is this version and where it is installed.
This worked for me:
Re-install curl and install it using the following commands (after unpacked):
$ ./configure --with-darwinssl
$ make
$ make test
$ sudo make install
When you run the command "curl --version" you'll notice that the https protocol is now present under "protocols".
A helpful site if you run into curl problems: https://curl.haxx.se/docs/install.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With