web-dev-qa-db-ja.com

libcurlでhttpsサポートを有効にするにはどうすればよいですか?

$ 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リポジトリでgit URLを使用しようとすると、同じエラーが発生します。

質問:

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

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

/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

質問は次のようになります:httpslibcurlのサポートを有効にするにはどうすればよいですか?

17
Ben Harold

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

Homebrewは/usr/bin/curl、つまり here を見るとわかるように、Mac OS Xに同梱されているバージョンを使用しています。

とはいえ、正確に言うと、問題はおそらくgitとリンクされ、http://およびhttps://に使用されるlibcurlのバージョンに関連しています。

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に対応するインストールディレクトリに置き換えます。

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

6
deltheil

これは私のために働いた:

Curlを再インストールし、次のコマンドを使用してインストールします(解凍後)。

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

「curl --version」コマンドを実行すると、httpsプロトコルが「protocols」の下に存在することに気付くでしょう。

Curlの問題が発生したときに参照する便利なサイト: https://curl.haxx.se/docs/install.html

2
Divij Ohri

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

1
jsanabria