使用 Puppet 删除“X Windows System”和 Gnome

使用 Puppet 删除“X Windows System”和 Gnome

我正在尝试使用 Puppet 删除生产 RHEL/CentOS 机器上不必要的服务,比如 XWindows 和 Gnome(我无法安装操作系统)。

据我所知,“groupremove”尚未得到支持/推荐,因为它与“groupinstall”并不完全“相反”。然后有一个命令rpm -q --group "User Interface/X",我相信它应该使用 exec{} 来工作,但一定有更优雅的方式来做到这一点,因为我确信这一定是相当经常做的事情。

有人吗?非常感谢!

答案1

Puppet Labs 对此有两张未解决的票。

http://projects.puppetlabs.com/issues/5175

http://projects.puppetlabs.com/issues/11995

目前两者都没有太多活动。您可以给它们点赞,这可能会让开发人员意识到这一点。

组的问题部分在于并非所有包管理器都拥有它们,并且在声明式系统管理的世界中对它们进行建模有点奇怪。

您可能还会遇到卸载某个组时无意中卸载其他包(属于其他组)的情况。不过,这是所有卸载类型的已知风险。

目前,您的 exec 可能是实现该目标的最优雅的方式。(除了不安装您不想开始使用的软件包)。

答案2

在 yum 的最新版本中,groupremove_leaf_only您可以使用一个选项来覆盖大多数您想要删除软件包组的情况。它只会卸载属于给定组的软件包,而不会卸载系统上“安装”的任何其他组的软件包。它的工作原理如下:yum --setopt=groupremove_leaf_only=1 group remove <group name>

groupremove_leaf_only选项是在 yum 3.2.28 中添加的,这意味着 RHEL 6 有它,但 RHEL 5 没有。

我通过编写自己的类型来管理 yum 软件包组来解决这个问题。它维护自己的已安装组列表,因此不会被 yum 为确定某个组是否已安装而进行的模糊匹配所混淆。如果要求它卸载已安装的组,它会groupremove_leaf_only在 RHEL 6 和 Fedora 17 上使用它;在 RHEL 5 上,它会直接执行此操作yum group remove <group>,然后yum group install对所有其他应安装的组执行此操作。这不是理想的,但这是我能想到的最好的方法。

相关内容