需要在RPM的%files部分中进行哪些操作

时间:2012-12-09 10:54:38

标签: python rpm rpm-spec

我有一个tar.gz,我想创建一个RPM,目前正在处理spec文件。我似乎无法理解在.spec的%files部分中包含文件的规则是什么。我的tar.gz由两个python包组成,并通过一个简单调用setup.py的makefile安装,该文件使用distutils setup()来安装它们。

我目前包含了我的文档但不确定如何选择要包含的内容:

%files
%doc README changelog
...

此外,我的makefile为应用程序生成man页面;应该在.spec文件中包含哪些/如何?

我在redhat上这样做。

1 个答案:

答案 0 :(得分:5)

%files部分必须列出将包含在二进制包中的每个文件,因此安装在目标计算机上。

如果您按照本书制作RPM,则spec文件有两个不同的用途。它是一个构建脚本,详细说明了如何将源代码转换为构建工件,以及一个打包脚本,详细说明了应在目标计算机上安装的构建产品。在您的情况下,构建方面非常轻量级。

在这种传统方法中,makefile在构建阶段运行,%files指令列出了应该安装哪些生成的构建工件。要明确的是,您要么不使用传统方法make install,要么将DESTDIR用于安装到RPM构建目录(即不进入/usr/lib/python/foo而是~/rpmbuild/BUILD/usr/lib/python/foo进入%files。然后,您可以从中选择%install的文件。

所以,你应该做的是让一些先前的部分(可能%files)运行makefile安装到构建区域,然后使用%files部分来挑选结果。请记住,您可以在{{1}}部分中使用通配符,因此您无需为每个文件明确命名。

这有意义吗?我误解了你的问题吗?