我需要根据应该在系统中安装的另一个RPM的版本,在spec文件中设置%define声明的值。
我已经尝试了这个,但我遇到了错误:
if [ -n "$(rpm -qa otherrpm)" ]; then
%define THIS_VALUE value
else
%define THIS_VALUE anothervalue
endif
答案 0 :(得分:1)
如果您的包依赖于包foo
,那么您需要正确准备规范文件,例如
包foo
的构建时间要求(如果某个版本,然后明确),应该有
BuildRequires: foo >= x.y.z-r
包foo
的运行时要求(如果某个版本,然后明确),应该有
Requires: foo >= x.y.z-r
然后,您可以将define用于其他条件,例如,
%global with_foo 1 # 1 means you need foo for build and install
%if %{with_foo}
%define THIS_VALUE value
BuildRequires: foo
Requires: foo
%else
%define THIS_VALUE anothervalue
%endif
答案 1 :(得分:1)
您正在将shell执行与RPM宏评估混合在一起。您需要使用%()
语法在宏评估时运行shell代码。例如,像这样:
%define other_rpm_version %(rpm -q otherrpm | cut -d - -f 2)
%if "%other_rpm_version" == "1.0.0"
%define THIS_VALUE value
%else
%define THIS_VALUE othervalue
%endif