RPM 宏和报价

RPM 宏和报价

我想在包中包含一个文件,该包的目录取决于系统。

我定义目录

%define completions_dir "%( pkg-config --variable=completionsdir bash-completion )"

例如我可以成功使用它

%install
make DESTDIR=${RPM_BUILD_ROOT}%{nagiospluginsdir} MANDIR=${RPM_BUILD_ROOT}%{_mandir} COMPLETIONDIR=${RPM_BUILD_ROOT}%{completions_dir} install

问题是当我必须定义文件列表时

文件就在那里。以下作品

%files
/usr/share/bash-completion/completions/check_ssl_cert

如果我使用变量

%files
%{completions_dir}/check_ssl_cert

我收到以下错误:

RPM build errors:
    More than one file on a line: /check_ssl_cert

为了调试我尝试过

%files
/%{completions_dir}/check_ssl_cert
%endif

在这种情况下我得到

    File not found: /root/rpmbuild/BUILDROOT/nagios-plugins-check_ssl_cert-2.20.0-0.fc35.x86_64/"/usr/share/bash-completion/completions"/check_ssl_cert

路径是正确的,但引号有问题。

如何使用宏定义的路径包含文件?

答案1

只需删除引号:

%define completions_dir %( pkg-config --variable=completionsdir bash-completion )

代替

%define completions_dir "%( pkg-config --variable=completionsdir bash-completion )"

作为旁注 - 您应该使用%global而不是%define.

答案2

即使%{completions_dir}只是目录,通过放置

%files
%{completions_dir}

完成工作(该文件包含在 RPM 中)

相关内容