1

昨天我终于在 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 文件的选项。然而,在 Python 2.3 和 2.7 上,不存在任何选项。

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

谢谢,

4

1 回答 1

1

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

于 2010-12-22T17:20:13.073 回答