Distutils,较旧的rpm和自定义规范文件

时间:2010-12-22 17:17:11

标签: python rpm distutils rpmbuild rpm-spec

我终于在昨天的Fedora 14上用RPM打包我的程序,我认为在CentOS 4.8盒子上以相同的方式构建它会很容易。事实证明,较旧版本的rpm和distutils几个有限,我没有任何运气解决它。

基本问题是使用Python 2.7的distutils支持一个名为“--post-install”的选项,我可以在其中指定一个脚本。该脚本包含在我使用yum或rpm安装时运行。一切都很棒。 但是,使用Python 2.3,没有--post-install选项(它实际上在RPM中不可用)。无论如何,我可以将它添加到我的.spec文件中的“%install”部分。 所以我用

开始RPM构建过程

python setup.py bdist_rpm --spec-only

创建我的.spec。我编辑它并将我的脚本粘贴到.spec中。然后,我用

来构建源代码

python setup.py bdist_rpm --source-only

这就是问题似乎开始发生的地方。 distutils创建以下子目录./build/bdist.linux-i686/rpm/。在里面有一个名为SPECS / netinfo.spec的文件夹(我的程序叫做netinfo)。但是,这不使用我刚刚创建的自定义.spec。 这很奇怪,因为它应该使用生成的.spec。如果我尝试使用默认的.spec进行构建,那么可以预见我的脚本不会包含在RPM中。如果我用我的自定义.spec覆盖它,它仍然无法正常工作。就像它为每个命令重新创建.spec一样。

bdist_rpm有各种命令,可以用

列出
python setup.py bdist_rpm --help

我希望找到一个可以指定要使用的.spec文件的otpion。然而,在Python 2.3和2.7上,没有选项存在。

必须有一些简单的方法来让distutils使用我的自定义.spec文件。有谁知道如何指定这个?

谢谢,

1 个答案:

答案 0 :(得分:1)

没有。使用rpmbuild -bs构建RPM,然后使用Mock为EL4构建一个包。