当我运行fab
它似乎失败的paramiko依赖:
Traceback (most recent call last): File "/usr/bin/fab", line 5, infrom pkg_resources import load_entry_point File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 2655, in working_set.require(__requires__) File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 648, in require needed = self.resolve(parse_requirements(requirements)) File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 546, in resolve raise DistributionNotFound(req) pkg_resources.DistributionNotFound: paramiko>=1.10
我正在运行64位Oracle Linux 6.5(相当于RHEL 6.5或CentOS 6.5).我安装了Fabric使用pip install fabric
和pip安装:
paramiko(1.14.0)
ecdsa(0.11)
面料(1.9.0)
pycrypto(2.6.1)
从1.14> 1.10开始,我不明白为什么我会失去依赖.这是Fabric 1.9.0中的错误吗?
我遇到过同样的问题.我解决了卸载结构并重新安装1.8.1:
sudo pip uninstall fabric sudo pip install fabric==1.8.1
我发现我必须恢复到paramiko 1.10和fabric 1.8.1,然后还注释掉/usr/lib64/python2.6/site-packages/Crypto/Util/number.py
每个https://github.com/ansible/ansible/issues/276的第56和57行.
综上所述:
pip uninstall fabric paramiko pip install paramiko==1.10 pip install fabric==1.8.1
然后:
vim /usr/lib64/python2.6/site-packages/Crypto/Util/number.py
并注释掉第56和57行,所以:
if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
_warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning)
变为:
#if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:
# _warn("Not using mpz_powm_sec. You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsec ureWarning)
现在fab --help
返回帮助信息而不是错误.;-)
感谢@steadweb和@carlynorama的建议.
我通过卸载fabric和paramiko,重新安装paramiko 1.10然后安装fabric来解决它
sudo pip uninstall fabric paramiko sudo pip install paramiko==1.10 sudo pip install fabric
如果我有更多的时间,我会慢慢增加paramiko的发布数量,以找出天花板的位置.我猜1.13因为这似乎是一个已知的bug.
https://github.com/fabric/fabric/issues/1105
最新的paramiko在修复中晚于1.13因此导致错误?
dev版本的结构可能不会发生,但这也需要在安装结构之前安装paramiko.