20

しようとする$ 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 情報も含まれています。

ところで:自分のマシンhttpsのリポジトリで URLを使用しようとすると、同じエラーが発生します。git

質問:

  1. curl使用しているへのパスを特定するにはどうすればよいbrewですか?
  2. httpsのサポートを有効にするにはどうすればよいlibcurlですか?

更新:以下のdeltheilの方法に従って、(および)が使用してlibcurl.4.dylibいるgitパスを特定できました。brewパスは次のとおりです。

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

だから私はこれを試しました:

$ brew install curl --with-libssh2

幸いなことに、curl は非 SSL URI で使用できるため、実際にインストールされました。にシンボリックリンクしませんでした/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したがって、問題はもっぱら次のようになります: in のサポートを有効にするにはどうすればよいlibcurlですか?

4

3 に答える 3

6

brew が使用している curl へのパスを特定するにはどうすればよいですか?

Homebrew は/usr/bin/curl、つまり Mac OS X に同梱されているバージョンを使用します (こちらを参照) 。

そうは言っても、あなたが正確に言うと、あなたの問題はおそらく と にリンクされgitて使用されhttp://ている libcurl のバージョンに関連してい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

exec で使用されている libcurl のバージョンgitは HTTPS をサポートしていないため、これにより、このバージョンが何であり、どこにインストールされているかがわかります。

于 2013-09-27T08:18:07.680 に答える
1

OSXでこの問題が発生しました。この問題は、usr/bin 内の同じ 2 つのファイルと競合する usr/local/bin 内の重複した curl および curl.config ファイルでした。local/bin の最初のセットを削除すると、その後ターミナルが機能しました。

于 2016-06-15T05:21:57.843 に答える