2013-09-25 99 views
12

Khi tôi cố gắng $ brew update Tôi nhận được lỗi:Làm cách nào để bật hỗ trợ https trong libcurl?

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

Tuy nhiên, khi tôi $ curl --version, tôi thấy:

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 

Trừ khi tôi là thiếu cái gì, mà có vẻ tốt với tôi. Lưu ý rằng https được liệt kê trong danh sách giao thức.

$ which curl mang lại một phản ứng đáng ngờ:

/usr/local/php5/bin/curl 

Hmmmmm ... có lẽ brew đang sử dụng một khác nhau curl (như tại /usr/bin/curl). Hãy xem:

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

Được rồi, nó rõ ràng là một khác nhau cài đặt của curl, nhưng nó cũng niêm yết https trong danh sách các giao thức, và có thông tin OpenSSL có quá.

BTW: Tôi gặp lỗi tương tự nếu tôi cố gắng sử dụng URL https với bất kỳ repo nào trên máy của mình git.

Câu hỏi:

  1. Làm thế nào tôi có thể xác định đường dẫn đến curl rằng brew đang sử dụng?
  2. Làm cách nào để bật hỗ trợ cho https trong libcurl?

UPDATE: tôi đã có thể để xác định đường dẫn đến libcurl.4.dylib rằng git (và brew) đang sử dụng bằng cách làm theo phương pháp deltheil của bên dưới. Đường dẫn là:

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

Vì vậy, tôi cố gắng này:

$ brew install curl --with-libssh2 

May mắn curl có sẵn tại một tổ chức phi SSL URI, vì vậy nó thực sự đã làm insstall. Nó không liên kết tượng trưng thành /usr/local, nhưng điều đó tốt với tôi (tôi nghĩ). Vì vậy, tôi đã làm điều này:

$ 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 

Nhưng nó vẫn còn ném cho tôi lỗi này:

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

Vì vậy, bây giờ câu hỏi độc quyền trở thành: Làm thế nào để kích hoạt tính năng hỗ trợ cho https trong libcurl?

Trả lời

4

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

Homebrew sử dụng /usr/bin/curl, tức là phiên bản mà tàu với Mac OS X, như bạn có thể nhìn thấy here.

Điều đó đang được nói và chính xác, vấn đề của bạn có thể liên quan đến phiên bản libcurl được liên kết với git và được sử dụng cho http://https://.

Thực hiện which git để xác định phiên bản bạn đang được sử dụng (tôi được cài đặt theo /usr/local).

Sau đó quét các thư viện chia sẻ sử dụng như sau:

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

Thay /usr/local/ với thư mục cài đặt tương ứng với git của bạn.

Vì phiên bản libcurl được sử dụng bởi git exec thiếu hỗ trợ HTTPS, điều này sẽ cho bạn biết phiên bản này là gì và được cài đặt ở đâu.

+0

Cảm ơn @deltheil, bạn đã cho tôi nửa đường. Tôi đã cập nhật câu hỏi với tiến trình hiện tại. –

+0

Chắc chắn có điều gì đó sai ở đâu đó vì 'git' được liên kết đúng với hệ thống libcurl, có hỗ trợ cho https. Điều đó đang được nói bạn nên ** không bao giờ, bao giờ ** sửa đổi các tập tin hệ thống của bạn dưới '/ usr/bin','/usr/lib', et al. Tôi khuyên bạn nên chạy một 'brew doctor' và kiểm tra [Github HTTPS cloning errors] (https://help.github.com/articles/https-cloning-errors) trang này. – deltheil

+0

Hoặc bạn có thể muốn cài đặt đúng 'git' qua Homebrew với tùy chọn' with-brewed-curl' để 'git' sử dụng' curl' từ brew phụ thuộc vào 'darwinssl' để hỗ trợ SSL. – deltheil

0

Tôi gặp sự cố này trên OSX. Vấn đề là các tập tin curl và curl.config trùng lặp trong usr/local/bin xung đột hai tập tin giống nhau trong usr/bin. Tôi đã xóa tập đầu tiên trong local/bin và Terminal làm việc sau đó.

1

này đã làm việc cho tôi:

Cài đặt lại curl và cài đặt nó bằng cách sử dụng lệnh sau (sau khi giải nén):

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

Khi bạn chạy lệnh "curl --version" bạn sẽ lưu ý rằng giao thức https hiện có trong "giao thức".

trang web hữu ích để tham khảo khi bạn gặp vấn đề curl: https://curl.haxx.se/docs/install.html