summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xlib/puppet/provider/package/apt.rb14
-rwxr-xr-xlib/puppet/provider/package/aptitude.rb6
-rwxr-xr-xlib/puppet/provider/package/dpkg.rb4
-rw-r--r--lib/puppet/type/package.rb10
4 files changed, 25 insertions, 9 deletions
diff --git a/lib/puppet/provider/package/apt.rb b/lib/puppet/provider/package/apt.rb
index 6fa70e56a..79a9e5f8e 100755
--- a/lib/puppet/provider/package/apt.rb
+++ b/lib/puppet/provider/package/apt.rb
@@ -16,10 +16,6 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
# Debian boxes, and the only thing that differs is that it can
# install packages from remote sites.
- def aptcmd(*args)
- aptget(*args)
- end
-
def checkforcdrom
unless defined? @@checkedforcdrom
if FileTest.exists? "/etc/apt/sources.list"
@@ -73,9 +69,9 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
end
end
- cmd << :install << str
+ cmd << 'install' << str
- aptcmd(cmd)
+ aptget(*cmd)
end
# What's the latest package version available?
@@ -127,9 +123,13 @@ Puppet::Type.type(:package).provide :apt, :parent => :dpkg do
end
def uninstall
- aptcmd "-y", "-q", :remove, @model[:name]
+ aptget "-y", "-q", :remove, @model[:name]
end
+ def purge
+ aptget '-y', '-q', 'remove', '--purge', @model[:name]
+ end
+
def versionable?
true
end
diff --git a/lib/puppet/provider/package/aptitude.rb b/lib/puppet/provider/package/aptitude.rb
index a959e34db..240c3fd82 100755
--- a/lib/puppet/provider/package/aptitude.rb
+++ b/lib/puppet/provider/package/aptitude.rb
@@ -6,7 +6,7 @@ Puppet::Type.type(:package).provide :aptitude, :parent => :apt do
ENV['DEBIAN_FRONTEND'] = "noninteractive"
- def aptcmd(*args)
+ def aptget(*args)
args.flatten!
# Apparently aptitude hasn't always supported a -q flag.
if args.include?("-q")
@@ -21,6 +21,10 @@ Puppet::Type.type(:package).provide :aptitude, :parent => :apt do
)
end
end
+
+ def purge
+ aptitude '-y', 'purge', @model[:name]
+ end
end
# $Id$
diff --git a/lib/puppet/provider/package/dpkg.rb b/lib/puppet/provider/package/dpkg.rb
index eb1911524..53b23ad64 100755
--- a/lib/puppet/provider/package/dpkg.rb
+++ b/lib/puppet/provider/package/dpkg.rb
@@ -100,6 +100,10 @@ Puppet::Type.type(:package).provide :dpkg do
def uninstall
dpkg "-r", @model[:name]
end
+
+ def purge
+ dpkg "--purge", @model[:name]
+ end
end
# $Id$
diff --git a/lib/puppet/type/package.rb b/lib/puppet/type/package.rb
index da4ec5db2..959520e1f 100644
--- a/lib/puppet/type/package.rb
+++ b/lib/puppet/type/package.rb
@@ -25,7 +25,11 @@ module Puppet
*latest* only makes sense for those packaging formats that can
retrieve new packages on their own and will throw an error on
those that cannot. For those packaging systems that allow you
- to specify package versions, specify them here."
+ to specify package versions, specify them here. Similarly,
+ *purged* is only useful for packaging systems that support
+ the notion of managing configuration files separately from
+ 'normal' system files. At present, only the Debian-related
+ providers (dpkg, apt, and aptitude) support *purged*."
attr_accessor :latest
@@ -36,6 +40,10 @@ module Puppet
newvalue(:absent, :event => :package_removed) do
provider.uninstall
end
+
+ newvalue(:purged, :event => :package_purged) do
+ provider.purge
+ end
# Alias the 'present' value.
aliasvalue(:installed, :present)