2013-09-25 19 views
12

Quando provo a $ brew update sto ottenendo l'errore:Come abilitare il supporto https in libcurl?

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

Tuttavia, quando ho $ curl --version, vedo:

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 

A meno che non mi manca qualcosa, che sembra buono per me. Notare che https è elencato nell'elenco dei protocolli.

$ which curl produce una risposta sospetto:

/usr/local/php5/bin/curl 

Hmmmmm ... forse brew utilizza un diverso curl (come quello di /usr/bin/curl). Vediamo:

$ /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, è ovviamente una diversa installazione di curl, ma è anche messa in vendita di https nella lista protocolli, e ha l'informazioni OpenSSL anche lì.

BTW: Ottengo lo stesso errore se provo a utilizzare un URL https con qualsiasi repository git sul mio computer.

Domande:

  1. Come è possibile determinare il percorso del curl che brew sta usando?
  2. Come abilitare il supporto per https in libcurl?

UPDATE: ho potuto determinare il percorso libcurl.4.dylib che git (e brew) utilizzano seguendo il metodo di Deltheil seguito. Il percorso è:

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

Così ho provato questo:

$ brew install curl --with-libssh2 

Fortunatamente ricciolo è disponibile ad un non-SSL URI, in modo che in realtà ha fatto insstall. Non ha link simbolico in /usr/local, ma va bene per me (penso). Così ho fatto questo:

$ 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 

ma è ancora me gettando questo errore:

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

Così ora la domanda diventa esclusivamente: Come faccio ad abilitare il supporto per https in libcurl?

risposta

4

How can I determine the path to the curl that brew is using?

Homebrew utilizza /usr/bin/curl, cioè la versione che viene fornito con Mac OS X, come si può vedere here.

Detto questo, e come si precisa, il problema è probabilmente legato alla versione di libcurl che è collegato con git e utilizzata per http:// e https://.

Eseguire un which git per determinare qual è la versione che si sta utilizzando (il mio è installato in /usr/local).

quindi acquisire le librerie condivise utilizzate come segue:

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

Sostituire /usr/local/ con la directory di installazione che corrisponde al vostro git.

Dal momento che la versione libcurl utilizzata dal git exec manca di supporto HTTPS, questo vi dirà che cosa è questa versione e in cui è installato.

+0

Grazie @deltheil, mi hai a metà strada. Ho aggiornato la domanda con i progressi in corso. –

+0

C'è sicuramente qualcosa di sbagliato da qualche parte poiché 'git' è correttamente collegato al sistema libcurl, che ha il supporto per https. Detto questo dovresti ** mai, mai ** modificare i tuoi file di sistema sotto '/ usr/bin','/usr/lib', et al. Ti consiglio di eseguire un 'brew doctor' e di controllare questa [pagina degli errori di clonazione di Github HTTPS] (https://help.github.com/articles/https-cloning-errors). – deltheil

+0

In alternativa potresti voler installare 'git' correttamente tramite Homebrew con l'opzione' with-brewed-curl' in modo che 'git' usi' curl' da brew che dipende da 'darwinssl' per il supporto SSL. – deltheil

0

Ho riscontrato questo problema su OSX. Il problema erano i file duplicl e curl.config all'interno di usr/local/bin che erano in conflitto con gli stessi due file in usr/bin. Ho eliminato il primo set in locale/bin e il terminale ha funzionato dopo.

1

questo ha funzionato per me:

Reinstallare curl e installarlo usando i seguenti comandi (dopo decompresso):

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

Quando si esegue il comando "ricciolo --version" Avrete si noti che il protocollo https è ora presente sotto "protocolli".

sito utile fare riferimento quando si esegue in problemi di arricciatura: https://curl.haxx.se/docs/install.html

Problemi correlati