Как включить поддержку https в libcurl?

Когда я пытаюсь $ 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 в списке протоколов и также содержит информацию OpenSSL.

BTW: Я получаю ту же ошибку, если попытаюсь использовать URL https с любым репо на git на моей машине.

Вопросы:

  • Как определить путь к curl, который использует brew?
  • Как включить поддержку https в libcurl?

UPDATE:. Мне удалось определить путь к libcurl.4.dylib, который gitbrew) использует, следуя приведенному ниже методу deltheil. Путь:

/usr/lib/libcurl.4.dylib (compatibility version 6.0.0, current version 6.1.0)

Итак, я пробовал это:

$ brew install curl --with-libssh2

К счастью, завиток доступен на URI без SSL, поэтому он действительно установил. Он не символически ссылался на /usr/local, но это прекрасно со мной (я думаю). Поэтому я сделал это:

$ 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

Как определить путь к завиту, который использует brew?

Homebrew использует /usr/bin/curl, то есть версию, которая поставляется с Mac OS X, как вы можете видеть здесь.

С учетом того, что ваша проблема, вероятно, связана с версией libcurl, связанной с git и используемой для http:// и https://.

Выполните 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.

Так как версия libcurl, используемая вашим git exec, не поддерживает HTTPS, это скажет вам, что это за версия и где она установлена.

Ответ 2

Это сработало для меня:

Переустановите завиток и установите его, используя следующие команды (после распаковки):

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

Когда вы запускаете команду "curl -version", вы заметите, что протокол https теперь присутствует в "протоколах".

Полезный сайт для ссылки, когда вы сталкиваетесь с проблемами завитки: https://curl.haxx.se/docs/install.html

Ответ 3

У меня была эта проблема на OSX. Проблема заключалась в дублировании файлов curl и curl.config внутри usr/local/bin, которые противоречили тем же двум файлам в usr/bin. Я удалил первый набор в локальном /bin, и после этого Terminal работал.