我有一个tar.gz
,我想创建一个RPM,目前正在处理spec文件。我似乎无法理解在.spec的%files
部分中包含文件的规则是什么。我的tar.gz
由两个python包组成,并通过一个简单调用setup.py
的makefile安装,该文件使用distutils setup()
来安装它们。
我目前包含了我的文档但不确定如何选择要包含的内容:
%files
%doc README changelog
...
此外,我的makefile为应用程序生成man
页面;应该在.spec文件中包含哪些/如何?
我在redhat上这样做。
答案 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}}部分中使用通配符,因此您无需为每个文件明确命名。
这有意义吗?我误解了你的问题吗?