pin.pp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. # pin.pp
  2. # pin a release in apt, useful for unstable repositories
  3. define apt::pin(
  4. $ensure = present,
  5. $explanation = "${::caller_module_name}: ${name}",
  6. $order = '',
  7. $packages = '*',
  8. $priority = 0,
  9. $release = '',
  10. $origin = '',
  11. $originator = '',
  12. $version = ''
  13. ) {
  14. include apt::params
  15. $preferences_d = $apt::params::preferences_d
  16. if $order != '' and !is_integer($order) {
  17. fail('Only integers are allowed in the apt::pin order param')
  18. }
  19. if $release != '' {
  20. $pin = "release a=${release}"
  21. } elsif $origin != '' {
  22. $pin = "origin \"${origin}\""
  23. } elsif $originator != '' {
  24. $pin = "release o=${originator}"
  25. } elsif $version != '' {
  26. $pin = "version ${version}"
  27. } else {
  28. $pin = "release a=${name}"
  29. }
  30. $path = $order ? {
  31. '' => "${preferences_d}/${name}.pref",
  32. default => "${preferences_d}/${order}-${name}.pref",
  33. }
  34. file { "${name}.pref":
  35. ensure => $ensure,
  36. path => $path,
  37. owner => root,
  38. group => root,
  39. mode => '0644',
  40. content => template('apt/pin.pref.erb'),
  41. }
  42. }