如何删除带有厨师的rpm包以及依赖项?

时间:2014-06-17 14:49:49

标签: ruby chef rpm

如果配方中的rpm包可能与其相关联,那么如何删除它?

我的用例是我是测试人员,并使用厨师来设置/升级/降级我的测试环境。为了确保升级时我有一个干净的环境,我删除了使用以下命令安装的应用程序:

rpm_package rpmName do
    action[:remove]
end

但是,有时我的环境还会安装额外的“插件”rpm,这取决于主应用程序的rpm。当我运行chef并运行remove main app的package命令时,由于依赖性问题,chef失败了:

Chef::Exceptions::Exec
----------------------
rpm  -e <main app> returned 1, expected 0

在服务器上:

[root@qa ~]# rpm  -e <main app>
error: Failed dependencies:
<main app> >= X.x.x is needed by (installed) <plugin rpm>

我查看了rpm_package的Chef文档,但没有遇到任何可以帮助我的东西。有没有人有任何建议?

2 个答案:

答案 0 :(得分:1)

不幸的是,这是RPM的副产品,而不是Chef。您需要查询RPM以确定哪些包将其用作依赖项并首先卸载它们。它就像反向依赖管理一样。

答案 1 :(得分:1)

是否有使用yum的厨师规则(或其他任何名称)?要求yum删除另一个包依赖的包将要求删除依赖包,只有在被告知不要时才会失败。