首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何卸载带有puppet的DMG?

如何卸载带有puppet的DMG?
EN

Stack Overflow用户
提问于 2013-09-10 01:41:16
回答 2查看 827关注 0票数 1

因此,我有一个本地DMG,它是用puppet安装的(VirtualBox-4.2.18-88780-OSX.dmg),我用它来运行它

sudo puppet resource package virtualbox ensure=present provider=pkgdmg source=puppet:///virtualbox/VirtualBox-4.2.18-88780-OSX.dmg

一切都很好。但是当我尝试用sudo puppet resource package virtualbox ensure=absent删除它时,我得到了一个错误

Error: Could not set 'absent' on ensure: undefined method 'uninstall' for #<Puppet::Type::Package::ProviderPkgdmg:0x107cb8218>

我有一个模糊的概念,为什么会发生这种情况,它看起来不像木偶正在识别的virtualbox卸载工具。我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2014-01-21 10:17:57

millmouse是正确的OS X包不能被卸载,至少通过这种方法。Puppet不支持appdmg或apppkg提供程序上的'absent‘。

但是,您可以通过删除Puppet创建的跟踪安装包的类似cookie的文件来欺骗Puppet重新安装包。Puppet在/var/db中创建一个类似于OS上的.puppet_<provider>_installed_<package_name>-<version>模式的文件;例如,您将拥有一个类似/var/db/.puppet_pkgdmg_installed_VirtualBox-4.2.18-88780的文件

你可以像下面这样做,但它实际上不会卸载应用程序,只会欺骗Puppet允许它再次安装:

代码语言:javascript
复制
exec {'rm -f .puppet_pkgdmg_installed_VirtualBox-4.2.18-88780':
  cwd => /var/db/',
  user => 'root',
  onlyif => 'test -f /var/db/.puppet_pkgdmg_installed_VirtualBox-4.2.18-88780',
}

代码语言:javascript
复制
file {'/var/db/.puppet_pkgdmg_installed_VirtualBox-4.2.18-88780':
  ensure => 'absent',
  force => true,
}

否则,需要更改软件包的版本号或名称才能再次安装。

票数 2
EN

Stack Overflow用户

发布于 2013-09-10 02:55:19

我将使用exec资源而不是package资源来执行卸载。

代码语言:javascript
复制
exec { "uninstall_mypkg" :
  command => "uninstall mypkg",
  onlyif => "check if the package is installed",
  path => "/path/to/command/",
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18703913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档