web-dev-qa-db-fra.com

Comment activer le support https dans libcurl?

Quand j'essaie de $ brew update je reçois l'erreur:

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

Cependant, quand je $ curl --version, je vois:

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 

À moins que je manque quelque chose, cela me semble bien. Notez que https est répertorié dans la liste des protocoles.

$ which curl donne une réponse suspecte:

/usr/local/php5/bin/curl

Hmmmmm ... peut-être que brew utilise une curl différente (comme celle de /usr/bin/curl). Voyons voir:

$ /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 

D'accord, il s'agit évidemment d'une installation différente de curl, mais elle répertorie également https dans la liste des protocoles et contient également les informations OpenSSL.

BTW: J'obtiens la même erreur si j'essaie d'utiliser une URL https avec un dépôt git sur ma machine.

Des questions:

  1. Comment puis-je déterminer le chemin d'accès à la curl que brew utilise?
  2. Comment activer le support pour https dans libcurl?

UPDATE: J'ai pu déterminer le chemin d'accès à libcurl.4.dylib que git (et brew) utilisent en suivant la méthode de deltheil ci-dessous. Le chemin est:

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

Alors j'ai essayé ceci:

$ brew install curl --with-libssh2

Heureusement, curl est disponible sur un URI non-SSL, il a donc été réellement installé. Il n'a pas de lien symbolique dans /usr/local, mais ça me convient (je pense). Alors j'ai fait ça:

$ 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

Mais cela me lance toujours cette erreur:

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

Alors maintenant, la question devient exclusivement: comment activer le support pour https dans libcurl?

16
Ben Harold

Comment puis-je déterminer le chemin d'accès à la boucle que l'infusion utilise?

Homebrew utilise /usr/bin/curl, c’est-à-dire la version fournie avec Mac OS X, comme vous pouvez le voir ici .

Cela étant dit, et comme vous l'avez précisé, votre problème est probablement lié à la version de libcurl liée à git et utilisée pour http:// et https://.

Effectuez un which git pour déterminer quelle est la version que vous utilisez (le mien est installé sous /usr/local).

Puis analysez les bibliothèques partagées utilisées comme suit:

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

Remplacez /usr/local/ par le répertoire d'installation correspondant à votre git.

Étant donné que la version libcurl utilisée par votre git exec manque de prise en charge HTTPS, cela vous indiquera quelle est cette version et où elle est installée.

6
deltheil

Cela a fonctionné pour moi:

Réinstallez curl et installez-le en utilisant les commandes suivantes (après décompression):

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

Lorsque vous exécutez la commande "curl --version", vous remarquerez que le protocole https est maintenant présent sous "protocoles".

Site utile à consulter en cas de problème avec Curl: https://curl.haxx.se/docs/install.html

2
Divij Ohri

J'ai eu ce problème sur OSX. Le problème concernait les fichiers curl et curl.config en double dans usr/local/bin qui étaient en conflit avec les deux mêmes fichiers dans usr/bin. J'ai supprimé le premier jeu dans le répertoire/bin local et le terminal a fonctionné par la suite. 

0
jsanabria