您的位置:首页 > 产品设计 > UI/UE

new module add in with lots of issues(part 1)

2015-03-27 10:05 393 查看
centos unable to execute gcc: No such file or directory http://www.codesky.net/article/201112/165268.html
安装gcc即可

pkg_resources 文档
http://galaxy-dist.readthedocs.org/en/latest/lib/pkg_resources.html
一般python采用import导入需要使用的包,但是要多插件动态扩展就需要stevedore了,python setup.py install时会从setup.cfg中解析出entry_points并记录在系统中

需要使用时,使用stevedore的dispatch引入即可(服务启动时会读取系统中entry_points并做好映射),非常方便,本质上使用的是pkg_resources包

 pkg_resources.load_entry_point('ironic','ironic.drivers','pxe_ipmitool')

 pkg_resources.get_entry_map('ironic','ironic.drivers')

记录几个命令,总是忘记格式

find / -name "name" 

yes | rm -r dir

rm -rf dir

rpm -qa | grep ironic    列出安装包

rpm -e xxx    卸载安装包

find ./ -name "*.php" | xargs grep '关键字'

find ./ -name "*.php" | xargs grep -F '关键字'(如果需要查找的内容包含特殊符号,比如$等等,grep要加参数)

自己编译安装ironic版本,发现与现在机器上的版本不匹配,之后/usr/lib/python2.7/site-packages/下有

ironic-2015.1.dev200.gadb8d74-py2.7.egg-info/和

ironic-2014.2-py2.7.egg-info/ 两个egg info文件夹,后一个是采用yum安装的结果,查看其中的entry_points.txt文件,是和

运行pkg_resources.get_entry_map('ironic','ironic.drivers')结果一致的,这说明使用git clone下来ironic的源码包之后,修改并采用python setup.py install安装

并没有改变系统的entry_points集合

同时采用源码包安装时,系统并没有形成openstack-ironic-api.service或者openstack-ironic-conductor.service服务,即没有/usr/bin/ironic-api和/usr/bin/ironic-conductor,我们可以手动添加或者使用yum安装后自动添加

/usr/bin/ironic 文件中是启动的ironicclient服务,/usr/bin/ironic-api和/usr/bin/ironic-conductor则分别启动对应的api和conductor服务

采用yum install openstack-ironic-*时,还会安装ironic-discoverd service

至于为什么采用python setup.py install安装源码包的时候没有更新entry_points,难道一定要打成egg包才可以?

我决定试试:

删除ironic-2014.2-py2.7.egg-info后,运行:

 pkg_resources.load_entry_point('ironic==2015.1.dev200.gadb8d74','ironic.drivers','pxe_my')

报错说:

pkg_resources.VersionConflict: (ironic 2014.2 (/usr/lib/python2.7/site-packages), Requirement.parse('ironic==2015.1.dev200.gadb8d74'))

升级setuptools( pip install --upgrade setuptools)仍然不行

 rpm -qa | grep ironic 查看发现ironic的包有:

python-ironicclient-0.3.1-1.el7.centos.noarch

openstack-ironic-api-2014.2-2.el7.centos.noarch

openstack-ironic-discoverd-0.2.5-1.el7.centos.noarch

openstack-ironic-common-2014.2-2.el7.centos.noarch

openstack-ironic-conductor-2014.2-2.el7.centos.noarch

尝试卸载2014.2的包:

 rpm -e openstack-ironic-api-2014.2-2.el7.centos.noarch#还有common和conductor

之后删除系统中所有和ironic相关的文件和文件夹,用find命令查出来后删除,之后再重新安装源码包,问题(Version Conflict)仍然存在

但是发现此时使用 pkg_resources.get_entry_map('ironic','ironic_drivers')时有自己的driver出现,但load_entry_point时却失败,各种Version不匹配或者version conflict,

同时有些包被其他的openstack模块required,例如:

[root@xxxx)]# rpm -e python-netifaces-0.5-4.el7.x86_64

error: Failed dependencies:

        python-netifaces is needed by (installed) openstack-swift-2.2.0-1.el7.centos.noarch

此版本的ironic直接安装后和可能之前的openstack环境不兼容,决定放弃编译源码安装,在老版本中的egg文件夹中的entry_points.txt中添加项

然而删除现有安装,使用yum 安装ironic包后,再次出现netifaces

pkg_resources.ContextualVersionConflict: (0.5 (/usr/lib64/python2.7/site-packages), Requirement.parse('netifaces>=0.10.4'), set(['oslo.utils']))

和上面的相同,最后落到同一个地方了!

使用pip卸载netifaces,之后重新安装0.10.4依然不行

决定重装RDO!netifaces看起来像是网络的问题,ironic 的工作流(修改及调试) 三 中解决了之后,再次运行,竟然没问题了,神奇!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐