如何使用RPM打包创建条件打包

时间:2018-10-02 12:45:34

标签: rpm rpmbuild rpm-spec

我正在使用规格文件来创建RPM软件包。我只想打包系统中存在的那些文件。在我的%files部分中,我正在编写要包含在程序包中的文件。有条件包和无条件包的包含方式如下。

%files
    %if "%is_file1_present"
    %attr (-, root, root) /location/to/file1
    %attr (-, root, root) /location/to/file2
%endif
%attr (-, root, root) /location/to/file3
%attr (-, root, root) /location/to/file4

%is_file1_present是在%build部分中定义的。

%build
%define is_file1_present %( if [ -f /location/to/file1 ]; then echo "1" ; else echo "0"; fi )`

在尝试构建RPM软件包时,似乎忽略了if条件。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

有一个更简单的解决方案:

在您的安装部分;仅复制存在的文件;并在文件部分使用通配符:

%install
install -d -m 0755 "${RPM_BUILD_ROOT}/location/to"
cp file* ${RPM_BUILD_ROOT}/location/to/

%files
%defattr(-,root,root)
/location/to/file*

注意:这可行,但这意味着您的spec文件不会总是创建相同的程序包,这不是很好...