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
路徑是正確的,但引號是個問題。
如何使用宏定義的路徑包含文件?
只需刪除引號:
%define completions_dir %( pkg-config --variable=completionsdir bash-completion )
代替
%define completions_dir "%( pkg-config --variable=completionsdir bash-completion )"
作為旁注 - 你應該使用
%global
而不是%define
.
即使
%{completions_dir}
只是目錄,通過放置%files %{completions_dir}
完成工作(文件包含在 RPM 中)