1

したがって、パペット(VirtualBox-4.2.18-88780-OSX.dmg)でインストールするローカル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>

なぜこれが起こっているのか漠然とした考えがあります.puppetがvirtualboxアンインストールツールを認識しているようには見えません. これを修正するにはどうすればよいですか?

4

2 に答える 2

2

millmouse は正しい OS X パッケージは、少なくともこの方法ではアンインストールできません。Puppet は、appdmg または apppkg プロバイダーでの「absent」をサポートしていません。

ただし、パッケージがインストールされたことを追跡するために Puppet が作成する「Cookie」のようなファイルを削除することで、Puppet をだましてパッケージを再インストールさせることができます。Puppet は、OS X/var/dbのようなパターンでファイルを作成します。.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,
}

それ以外の場合、再度インストールするには、パッケージのバージョン番号または名前を変更する必要があります。

于 2014-01-21T02:17:57.483 に答える