【发布时间】:2020-10-06 07:02:50
【问题描述】:
为什么需要%files 以及为什么不能通过列出$RPM_BUILD_ROOT 目录内容来自动创建它?
例如,在那个规范文件中,我必须在脚本中使用一些修改,为我构建一个 RPM 包。我必须将cd 插入~/RPM/SOURCES,然后将find . 和echo 每行插入.spec 文件以设置%files 部分。它可以由工具使用与我在后台执行的相同技术自动完成,但来自$RPM_BUILD_ROOT 目录而不是?
%install
mkdir -p $RPM_BUILD_ROOT/opt/MyCompany/MyProduct/
cp -rf -- ~/RPM/SOURCES/* $RPM_BUILD_ROOT/opt/MyCompany/MyProduct/
%files
/opt/MyCompany/MyProduct/file_1
/opt/MyCompany/MyProduct/file_2
/opt/MyCompany/MyProduct/file_3
... - a lot of lines here
/opt/MyCompany/MyProduct/file_100000
UPD:
是的,可以自动使用所有复制的文件(Doc http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html)
就我而言,%files 可以改写成这样
%files
/opt/MyCompany/MyProduct/*
它将从$RPM_BUILD_ROOT/opt/MyCompany/MyProduct 获取文件,因此要使用星号,我们需要省略构建根目录,即$RPM_BUILD_ROOT 或%{buildroot}(这是 rpm 搜索文件 IIUC 的默认路径)
【问题讨论】:
-
我不知道哪个是最强的设计决策或历史顺序,但这里有一些潜在的原因:拆分包,不同的包会有不同的
%files指令,使用%doc等来更改文件的方式被处理,放置%ghost文件的地方,来自行为不佳的安装脚本的临时构建文件等。 -
@DanielH 所以你的意思是没有办法自动化它?
-
特别是由于最后一点关于行为不佳的安装脚本,您可能实际上想要至少不检查,并且您不能完全 如果您有文档、配置文件或 ghost 文件,或者如果您需要更改属性等,则将其自动化。但我认为有一些方法可以使用通配符,因此您不需要完全列出所有内容确定你不想。
标签: rpmbuild