查看cinder所需的依赖列表:
root@controller:/opt# cat $opestack_home/cinder/tools/pip-requires
amqplib==0.6.1
anyjson>=0.2.4
eventlet>=0.9.17
kombu==1.0.4
lockfile==0.8
lxml>=2.3
routes==1.12.3
WebOb==1.0.8
wsgiref==0.1.2
greenlet>=0.3.1
PasteDeploy==1.5.0
paste
stevedore>=0.8.0
suds==0.4
paramiko
Babel>=0.9.6
iso8601>=0.1.4
setuptools_git>=0.4
#Python-glanceclient>=0.5.0,<2
#python-keystoneclient>=0.2.0
将列表提取出来之后,用命令查看系统安装依赖的版本号,并与运行正常的环境中的结果做比对:
# while read line; do pip search $line; done < pip-requires > pip-search-1
比对之后很快发现问题,pasteDeploy版本为1.5.2, 估计是其他模块安装的时候带入的新版本。
PasteDeploy - Load, configure, and compose WSGI applications and servers
INSTALLED: 1.5.2
用pip install pastedeploy==1.5.0 强制装回后,cinder创建卷,挂载卷正常,排错完毕。
总结:
1. 使用老版本的开源软件需要留意依赖包更新所引入的Bug,要么升级开源软件,要么固定依赖版本。
2. 在排除代码被改动造成的错误之后,需要注意操作系统的更新所带来的依赖不匹配。
Good Luck
转载请注明出处,谢谢 by 熊崽Kevin!