微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

木偶不卸载包

如何解决木偶不卸载包

我正在尝试使用 puppet 卸载 packageA,但是 puppet 没有卸载。

我的包资源如下所示:

  package {
    'packageA':
      ensure            => absent,provider          => rpm,alias             => 'packageA',name              => 'packageA',uninstall_options => ['--nodeps'],}

以下是该软件包的 --debug puppet 日志:

Debug: /Package[packageA]: Provider rpm does not support features targetable; not managing attribute command


Debug: Executing: '/bin/rpm --version'
Debug: Executing '/bin/rpm -qa --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH}\n' | sort'
Debug: Executing: '/bin/rpm -q packageA --nosignature --nodigest --qf %{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH}\n'
Debug: Executing: '/bin/rpm -q packageA --nosignature --nodigest --qf %{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH}\n --whatprovides'
Debug: /Package[packageA]: nothing to manage: no ensure and the resource doesn't exist

我没有看到 puppet 在任何地方执行 rpm -e --nodeps packageA。我错过了什么吗?

请注意,如果我在 rpm -e packageA --nodeps 资源中有 exec,它会卸载软件包。但是我想知道上面的包资源有什么问题。

提前致谢。

解决方法

试试这个

package { 'packageA':
  ensure            => absent,alias             => 'packageA-<version or arch>',uninstall_options => ['--nodeps'],}

最好不要指定提供程序,Puppet 的优点之一是抽象层,它会为您找出正确的提供程序,以便您的代码可以在任何操作系统上运行,您可能会发现 Puppet 成功删除了这个包与百胜。只需将复杂性留给 Puppet 解决即可。

如果包可能被称为不同的名称,你只需要别名,yum 信息应该告诉你这个或 rpm -qa packageA,这对添加到原始问题很有用。

您通常不需要指定名称,因为它默认为资源标题。

https://puppet.com/docs/puppet/5.5/types/package.html

,

我没有看到 puppet 在任何地方执行 rpm -e --nodeps packageA。我错过了什么吗?

是和否,也许。

你看到了吗……

Debug: /Package[packageA]: Nothing to manage: no ensure and the resource doesn't exist

?这告诉您首先没有安装包 packageA。在这种情况下,Puppet 不需要做任何事情来让它消失。特别是,它不会为(最初)未安装的软件包执行 rpm -e 命令。

但是,该消息还说“不确定”。也许这显示了一个错误,但它似乎告诉您它应用的 Package 没有表示 ensure 属性,这意味着所提供的输出与所提供的代码不符。尽管如此,这并没有改变上一段中的任何内容。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。