如何在构build用于SCL的python模块RPM时修复python(abi)的需求?

我目前正尝试在CentOS 6上使用SCL python33资源库为我们的一个应用程序设置一个环境。 该应用程序还需要一些额外的Python模块,如numpy,所以我试图build立这些; 我越来越接近,但是当我构build包时,它需要python(abi) => 3.3

根据SCL文档,我想要改变Requires,这是很明显的,我在/etc/rpm/macros.python3.python33看到了一堆goo,看起来它应该处理这个(这是一个隐含的require,而不是一个我可以在spec文件中修改),但我不知道如何让这些macros覆盖spec文件中的各个macros。 有没有人为python模块构buildRPM以添加到python33 SCL,以及您采取了哪些步骤?

logging,这是我的程序到目前为止:

 setup.py bdist --format=rpm # to generate the base specfile, numpy.spec spec2scl numpy.spec # to generate the SCLed specfile (edit specfile to remove %define __os_install_post bloc which doesn't cooperate with SCL) rpmbuild -ba numpy.py -D 'scl python33' # to try and build the RPM from the specfile 

这让我一个RPM,但与破碎的要求(这需要python33-python(abi) )。

你可能会过去这个问题,但我想用我工作的方法更新。

这是我的情况:

我从下载的蛋文件中使用脚本构build了几个python27 SCL RPMs。注意:这就是我如何在Python Django Web应用程序的所有依赖项中取得的,并且是从Atlassian Bamboo计划的内部运行来构buildWeb应用程序RPM。

就这里讨论的需求问题而言,

我以编程方式将软件包名称replace为“python27-python-”前缀,并且所有打包的文件都选取了“/ opt / rh / python27 / root”的SCL根path,所以一切正常…除了它们所有人都拿起了python(abi)= 2.7的要求,就像你3.3的要求一样

注意:因为我用SCL版本replace了软件包的“名称”,所以我保存了一个新的setup.py文件,我称之为:

 setupSCL.py 

我尝试了一些macros的咒语,但是解决了我的需求问题其实很简单。

在我的setup.py命令行中,我只是添加了:

 --no-autoreq 

为了replace这个错误的自动需求,我重新join了SCL版本,

 --requires "python27-python" 

所以我的实际命令是:

 python setupSCL.py bdist_rpm --no-autoreq --requires "python27-python" &> /dev/null 

繁荣! 像冠军一样工作

所以当我使用yum deplist(在这个例子中是djangorestframework)检查需求时:

我得到:

 yum deplist /root/rpmbuild/SOURCES/djangorestframework-2.4.4/dist/python27-python-djangorestframework-2.4.4-1.noarch.rpm Finding dependencies: package: python27-python-djangorestframework.noarch 2.4.4-1 dependency: python27-python provider: python27-python.x86_64 2.7.5-7.el6.centos.alt 

希望这有助于某人有一天…