我想在包中包含一个文件,该包的目录取决于系统。
我定义目录
%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 中)