【发布时间】:2014-02-24 00:09:51
【问题描述】:
我在 OS X 10.9.1 上遇到了 mercurial 的问题 我在 bitbucket 上有一个包含几个文件的存储库,当我尝试克隆它时出现错误:
mac-mini-jakub:testrepo kubeczek$ hg clone https://kubecz3k@bitbucket.org/kubecz3k/test
abort: error: _ssl.c:507: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
我已经从https://www.mercurial-scm.org/downloads/ 安装了适用于 MacOS X 10.9 的 Mercurial 2.8.2
我很确定在 bitbucket 方面一切正常,因为我在 linux 机器上没有问题。
这是完整的回溯:
mac-mini-jakub:testrepo kubeczek$ hg clone https://kubecz3k@bitbucket.org/kubecz3k/test --traceback
Traceback (most recent call last):
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 133, in _runcatch
return _dispatch(req)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 806, in _dispatch
cmdpats, cmdoptions)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 585, in runcommand
ret = _runcommand(ui, options, cmd, d)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 897, in _runcommand
return checkargs()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 868, in checkargs
return cmdfunc()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/dispatch.py", line 803, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/util.py", line 512, in check
return func(*args, **kwargs)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/commands.py", line 1286, in clone
branch=opts.get('branch'))
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/hg.py", line 268, in clone
srcpeer = peer(ui, peeropts, source)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/hg.py", line 122, in peer
return _peerorrepo(rui, path, create).peer()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/hg.py", line 102, in _peerorrepo
obj = _peerlookup(path).instance(ui, path, create)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httppeer.py", line 238, in instance
inst._fetchcaps()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httppeer.py", line 57, in _fetchcaps
self.caps = set(self._call('capabilities').split())
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httppeer.py", line 171, in _call
fp = self._callstream(cmd, **args)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/httppeer.py", line 118, in _callstream
resp = self.urlopener.open(req)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 404, in open
response = self._open(req, data)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 422, in _open
'_open', req)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/url.py", line 368, in https_open
return self.do_open(self._makeconnection, req)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mercurial/keepalive.py", line 257, in do_open
raise urllib2.URLError(err)
URLError: <urlopen error [Errno 1] _ssl.c:507: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number>
abort: error: _ssl.c:507: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
我的 Python 版本是:
mac-mini-jakub:~ kubeczek$ python -V
Python 2.7.6
和 SSL:
>>> print _ssl.OPENSSL_VERSION
OpenSSL 0.9.8y 5 Feb 2013
我会感谢每一个帮助,谢谢!
【问题讨论】:
-
发布准确的 Python 版本和 SSL 版本(导入 _ssl 并打印 _ssl.OPENSSL_VERSION)
-
@vzamanillo 感谢回复,SSL 版本为:“OpenSSL 0.9.8y 5 Feb 2013”,python 版本为:Python 2.7.6
-
从 Mercurial 2.7 sslutils 在 Python 2.6 及更高版本上强制 SSLv3,bitbucket 使用 V3,所以问题可能与 OpenSSL 有关,请尝试更新 OpenSSL (stackoverflow.com/questions/18752409/…) 或禁用 Mercurial 证书检查 (@987654323 @)
-
感谢@vzamanillo 的建议,不幸的是它们不适用于我的情况。禁用证书检查不会改变任何东西,并且由于某种原因我无法完全更新 ssl:在终端中,我现在有版本“OpenSSL 1.0.1f 6 Jan 2014”,但在 python 中仍然有版本“OpenSSL 0.9.8y”。
-
那是另一种解决方案。很高兴能帮上忙。要升级 python ssl 库,您可以尝试“pip install ssl”,或者您可以下载 python 并编译它,指示 SSL 开发库的位置。无论如何,你已经有了解决方案,不要复杂:)