因此,我有一个本地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卸载工具。我该如何解决这个问题?
发布于 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允许它再次安装:
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',
}或
file {'/var/db/.puppet_pkgdmg_installed_VirtualBox-4.2.18-88780':
ensure => 'absent',
force => true,
}否则,需要更改软件包的版本号或名称才能再次安装。
发布于 2013-09-10 02:55:19
我将使用exec资源而不是package资源来执行卸载。
exec { "uninstall_mypkg" :
command => "uninstall mypkg",
onlyif => "check if the package is installed",
path => "/path/to/command/",
}https://stackoverflow.com/questions/18703913
复制相似问题