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:
curl
que brew
utilise?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
?
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.
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
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.