昨天,我终于在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
我希望找到一个otpion,您可以在其中指定要使用的.spec文件。但是,在Python 2.3和2.7上,不存在任何选项。
必须有一些简单的方法来使distutils使用我的自定义.spec文件。有人知道如何指定吗?
谢谢,
最佳答案
没有。使用rpmbuild -bs
构建SRPM,然后使用Mock构建用于EL4的程序包。
关于python - Distutils,较旧的rpm和自定义规范文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4511750/