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

puppet module install shows invalid message if existing modules are broken

    XMLWordPrintable

Details

    • Improvement
    • Status: Accepted
    • Normal
    • Resolution: Unresolved
    • PUP 7.3.0, PUP 6.23.0, PUP 7.8.0
    • None
    • None
    • Needs Assessment

    Description

      Puppet Version: 7.3.0

      In PUP-9176 we included unmet dependencies in the output of puppet module install. We handled two cases:

      • when the new module depends on an already installed module and its version is not satisfiable
        e.g. puppetlabs-stdlib 6.6.0 is installed, and the user wants to install puppetlabs-puppet_authorization version 0.4.0, which depends on stdlib "< 5.0.0"
      • when the dependency graph is broken prior to installing the new module (we only handled this partially)
        e.g.

            1. Install a module with fixed upper dependencies:
            > puppet module install --target-dir tmpdir trepasi-debnet -v 1.5.1
            This version has puppetlabs-stdlib bound to `>= 3.2.0 < 5.0.0`
            
            2. Forcibly remove the `stdlib` module
            > rm -rf tmpdir/stdlib
            
            3. Attempt to install a version of stdlib that breaks the above-stated
               dependency
            > puppet module install --target-dir tmpdir puppetlabs-stdlib -v "> 5"
        

      Turns out there's another case. Suppose puppet module list returns the following:

      Warning: Module 'puppetlabs-stdlib' (v6.6.0) fails to meet some dependencies:
        'jaxxstorm-teleport' (v0.1.0) requires 'puppetlabs-stdlib' (>=3.2.0 <5.0.0)
      /home/gabi/.puppetlabs/etc/code/environments/production/modules
      ├── jaxxstorm-teleport (v0.1.0)
      └── puppetlabs-stdlib (v6.6.0)  invalid
      

      Trying to install something like puppetlabs-concat version 7.0.1 would fail with the following:

      Error: Could not install module 'puppetlabs-concat' (v7.0.1)
        The requested version cannot satisfy one or more of the following installed modules:
          puppetlabs-stdlib, installed: 6.6.0, expected: >= 4.13.1 < 8.0.0
       
        Use `puppet module install 'puppetlabs-concat' --ignore-dependencies` to install only this module
      

      Note the wrong error message, since 6.6.0 does satisfy the >= 4.13.1 < 8.0.0 range.

      We need to find a way to also handle this case. Maybe we can rely on how puppet module list generates the list of unmet dependencies.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              gabriel.nagy Gabriel Nagy
              Votes:
              2 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:

                Zendesk Support