On 05-09-10 12:02, Marcin Owsiany wrote:
> On Tue, Aug 31, 2010 at 04:03:35PM +0200, Martijn Grendelman wrote:
>> What I would like, is for Puppet to run `aptitude update` before it
>> installs or upgrades packages.
> 
> FYI you're likely to encounter problems when using aptitude provider for
> package management. See Debian bugs #445034 #445035

Thanks. The former is not really important to me, since I never use
aptitude that way. The latter is probably a little more tricky, but at
least the 'unknown package' case is handled by Puppet itself:

# Yay, stupid aptitude doesn't throw an error when the package is missing.
if args.include?(:install) and output =~ /Couldn't find any package/
  raise Puppet::Error.new(
    "Could not find package #{self.name}"
  )
end

I have now solved my problem by using a custom provider for packages, that
is based on the aptitude provider, but simply adds this:

# See if we need to run aptitude update before installing this package
if not File.exists?("/tmp/puppet-iphionapt")
  FileUtils.touch("/tmp/puppet-iphionapt")
  aptitude("update")
end

I just haven't found a suitable way to clean up the tempfile from within
Puppet without touching any of Puppet's own files, so I use a cronjob for
that now. Maybe I'll switch to a 'postrun_command', or does anyone have a
better idea?

Best regards,
Martijn.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to