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

Expand the apt provider to support virtual packages

    Details

    • Template:
    • Team:
      Night's Watch
    • Story Points:
      3
    • Sprint:
      PR - 2019-06-12, PR - 2019-06-25, PR - 2019-07-10, PR - 2019-07-23, NW - 2019-09-18
    • Release Notes:
      New Feature
    • Release Notes Summary:
      Hide
      This enables apt and dpkg providers to install virtual packages.
      There is an attribute named allow_virtual which by default is set to true which enables the functionality to install virtual packages, the same behaviour can be found for rpm provider.

      If a package that is defined as virtual by default it will search a real package on that system.
      Example for virtual package named rubygems:

      package { 'rubygems':
          ensure => 'latest'
      }

      It will find ruby as the real package and it will be installed instead of rubygems.
      Note: this also can do unwanted behaviour if someone wants to uninstall a virtual package
      Example:

      package {'rubygems':
      ensure => 'absent'
      }

      This by default will remove ruby package.

      If the user don't want this functionality it can be done by setting the attribute allow_virtual to false.
      Example:

      package {'rubygems':
      ensure => 'absent'
      allow_virtual => false
      }
      Show
      This enables apt and dpkg providers to install virtual packages. There is an attribute named allow_virtual which by default is set to true which enables the functionality to install virtual packages, the same behaviour can be found for rpm provider. If a package that is defined as virtual by default it will search a real package on that system. Example for virtual package named rubygems: package { 'rubygems':     ensure => 'latest' } It will find ruby as the real package and it will be installed instead of rubygems. Note: this also can do unwanted behaviour if someone wants to uninstall a virtual package Example: package {'rubygems': ensure => 'absent' } This by default will remove ruby package. If the user don't want this functionality it can be done by setting the attribute allow_virtual to false. Example: package {'rubygems': ensure => 'absent' allow_virtual => false }
    • QA Risk Assessment:
      Needs Assessment

      Description

      This seems to be a problem for the rubygems package, particularly in Debian / Ubuntu.  I linked to a couple older tickets where this is reported as a minor issue with no workaround.

      UPDATE

      This ticket added virtual package support for apt & dpkg in 6.8.0, but it unintentionally caused the default value of the virtual parameter to change from false to true. It also caused a regression when packages have special characters in the name (PUP-9975), and the regex was overly greedy (PUP-9974). The code was reverted in 6.8.1, so puppet does not currently support virtual packages for apt & dpkg. A new ticket PUP-10023 has been filed to add virtual package support.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                alexandru.popa Alexandru Popa
                Reporter:
                erik.hansen Erik Hansen
              • Votes:
                0 Vote for this issue
                Watchers:
                6 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved:

                  Zendesk Support