【发布时间】:2021-07-27 13:30:22
【问题描述】:
我想为捆绑某个库的应用程序创建一个cross-distribution RPM spec file。应用程序默认使用这个捆绑的库,但也提供了一个构建时选项来使用系统中安装的库版本。如果 RPM 可用,我希望 RPM 将应用程序链接到系统库(因为这会使程序包更小,并且因为系统库比与应用程序捆绑的版本更频繁地获取安全补丁),如果没有,则回退到(默认)捆绑版本。有没有办法在规范文件中编写条件来实现这一点?
例如,我想做类似的事情
%if available(libfoo-devel >= 1.0)
BuildRequires: libfoo-devel >= 1.0
%endif
%prep
cat << EOF > build_config_file
%if available(libfoo-devel >= 1.0)
ac_add_options --with-system-foo
%endif
EOF
现在我正在使用条件来检查由特定版本的操作系统定义的宏,我已经知道打包了正确的库,但这相当脆弱和复杂。 (也就是说,我需要手动检查每个目标发行版,看它是否打包了正确版本的库,然后在该发行版的规范文件中写一个条件;此外,我需要定期重复这个过程,以防万一该库的版本可用于以前未打包的发行版。)如果我可以直接测试依赖项的可用性会更简单。
【问题讨论】: