我在rpm规范文件中遇到一些问题,该文件多次列出同一个文件。对于这个规范,我们做一些正常的编译,然后我们有脚本将所有内容复制到buildroot。在这个buildroot中,我们需要在最终系统上安装许多通用脚本,所以我们只列出这个目录。
但问题是,可能会更改其中一个脚本,并且可能会在脚本中更改配置选项。因此,我们将此脚本列为%config
的不同属性。但是,这意味着脚本是多次定义的,具有冲突的属性,因此rpmbuild会在安装包中抱怨并且根本不包含脚本。
有没有一种很好的方法来处理这个问题并告诉rpmbuild只使用第二个定义,或者我们是否必须将脚本分成两部分,一部分包含配置,另一部分包含实际逻辑?
答案 0 :(得分:1)
您可以创建文件列表,然后从中修剪重复文件,而不是指定目录。
所以,你有像
这样的地方%files
%dir foo
%config foo/scriptname
您可以将这些部分修改为
find $RPM_BUILD_ROOT -type f | sed -e "s|^$RPM_BUILD_ROOT||" > filelist
sed -i "\|^foo/scriptname$|d" filelist
%files -f filelist
%config foo/scriptname
您也可以使用%{buildroot}代替$ RPM_BUILD_ROOT。