1

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

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

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

4

1 回答 1

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。

于 2011-08-16T05:22:03.013 回答