【发布时间】:2019-08-02 01:37:13
【问题描述】:
我有一个非常简单的 RPM 规范文件,它根据 init 系统安装一个二进制文件和一个服务文件。我有一个宏来检查定义如下的初始化系统:
%define init_system $(/bin/awk -F '[()]' '{printf $2}' /proc/1/stat)
该命令可以正常工作,实际上是一个简单的语句
%pre
echo "%{init_system}"
在安装 rpm 时按预期输出 systemd。
我遇到的问题是在条件语句中使用时似乎不起作用,例如
%pre
%if "%{init_system}" == "systemd"
echo "using systemd"
%else
echo "using another init system: %{init_system}"
%endif
这个输出是:using another init system: systemd
我最初通过更改为简单的 bash 脚本解决了这个问题:
if [[ "%init_system" == "systemd" ]]
then
echo "using systemd"
else
echo "using another init system: %{init_system}"
fi
这会正确打印using systemd。
bash 方式在 %file 部分不起作用,尽管它期望 %if 或以 / 开头的文件
关于为什么原始方法不起作用的任何建议?
【问题讨论】:
标签: linux rpm specifications