【问题标题】:How to roll back RPM installation if %pre section of SPEC file script return false如果 SPEC 文件脚本的 %pre 部分返回 false,如何回滚 RPM 安装
【发布时间】:2016-08-05 20:35:19
【问题描述】:

我是 RPM 构建的新手。我必须构建 RPM,仅当目标机器上存在文件 /etc/i-am-a-requirement 时才会安装包。所以我写了

%pre
if test -f "/etc/i-am-a-requirement"; then 
echo "I'm OK to continue"
else
echo "The file is not found, the RPM won't be installed"
-- How to add failure here? --
fi

我知道通常我们希望 RPM 有依赖包,但在这种情况下,“/etc/i-am-a-requirement”是作为二进制分发的,所以它根本没有包。

【问题讨论】:

标签: rpm rpmbuild rpm-spec


【解决方案1】:

%pre%post 和其他脚本无法停止 rpm 的安装。一旦你进入了小脚本;无论脚本的退出代码如何,安装都将继续。

您应该使用要求:

Requires: /etc/i-am-a-requirement

【讨论】:

  • 如果/etc/i-am-a-requirement 本身不在 rpm 包中,它是否有效?
  • %post 不能,但 %pre 可以 - 只需致电 false。它不会“回滚”您在脚本中所做的任何事情。至于您回答的Requires 标志,这是正确的解决方案。我不确定它是直接查看文件系统还是检查 RPM DB。
  • 感谢@aaron 的澄清。 wilqu:是的,它只适用于一个文件,但正如 Aaron 所说,不确定它是在磁盘上还是在 rpm db 中搜索文件。
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 2019-06-14
  • 2016-06-04
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
相关资源
最近更新 更多