RPM规范中同一文件的多个列表存在问题

时间:2011-08-05 09:04:12

标签: packaging redhat rpm rpmbuild

我在rpm规范文件中遇到一些问题,该文件多次列出同一个文件。对于这个规范,我们做一些正常的编译,然后我们有脚本将所有内容复制到buildroot。在这个buildroot中,我们需要在最终系统上安装许多通用脚本,所以我们只列出这个目录。

但问题是,可能会更改其中一个脚本,并且可能会在脚本中更改配置选项。因此,我们将此脚本列为%config的不同属性。但是,这意味着脚本是多次定义的,具有冲突的属性,因此rpmbuild会在安装包中抱怨并且根本不包含脚本。

有没有一种很好的方法来处理这个问题并告诉rpmbuild只使用第二个定义,或者我们是否必须将脚本分成两部分,一部分包含配置,另一部分包含实际逻辑?

1 个答案:

答案 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。