我终于在昨天的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文件。有谁知道如何指定这个?
谢谢,