Uploaded image for project: 'Puppet'
  1. Puppet
  2. PUP-1537

Dpkg package provider misbehaving for held package with specific version

    XMLWordPrintable

    Details

    • Template:
      PUP Bug Template
    • Team:
      Night's Watch
    • Story Points:
      5
    • Sprint:
      NW - 2019-10-16, NW - 2019-10-30, NW - 2019-11-13, 2019-11-27, 2019-12-11, 2019-12-24, NW - 2020-01-22, NW - 2020-02-05, NW - 2020-02-19
    • Release Notes:
      New Feature
    • Release Notes Summary:
      Hide
      Added mark property for package providers on
      Debian(dpkg/apt/fink/aptitude) and Solaris(pgk) as
      alternative of using "held" value for ensure.

      Using "held" value for ensuring works as before, but it shows
      deprecation warning and will be removed in a further release.

      Allowed values for mark are "hold/none", default to "none".
      Mark can be specified with or without ensure, if ensure is
      missing it will default to "present".

      Mark cannot be specified together with "purged", "absent" or "held"
      values for ensure.
      Show
      Added mark property for package providers on Debian(dpkg/apt/fink/aptitude) and Solaris(pgk) as alternative of using "held" value for ensure. Using "held" value for ensuring works as before, but it shows deprecation warning and will be removed in a further release. Allowed values for mark are "hold/none", default to "none". Mark can be specified with or without ensure, if ensure is missing it will default to "present". Mark cannot be specified together with "purged", "absent" or "held" values for ensure.

      Description

      Judging from this StackOverflow question [1], I am running into a long-standing problem with the dpkg package provder. I have packages pinned to specific versions in Puppet with

      ensure => 'version_string'

      and at the same time have put these packages on 'hold' with dpkg to prevent unintended manual upgrades. Now, on every Puppet run, I get this:

      Package[mypackage]/ensure: ensure changed 'held' to 'version_string'

      I assume this is because of the following code in provider/package/dpkg.rb, line 92 (in Puppet 3.3.2-1puppetlabs1):

      hash[:ensure] = :held if hash[:desired] == 'hold'

      which sets the current 'ensure' to 'held', where the desired 'ensure' is the package version. It seems to me that the 'ensure' parameter should not be (ab)used to implement the 'holdable' feature.

      [1] http://serverfault.com/questions/370266/puppet-using-ensure-with-package-version-and-held

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              ciprian.badescu Ciprian Badescu
              Reporter:
              redmine.exporter redmine.exporter
              QA Contact:
              Eric Thompson
              Votes:
              0 Vote for this issue
              Watchers:
              9 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved:

                  Zendesk Support