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

puppet module install shows invalid message if existing modules are broken



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


      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)

            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
            > 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)
      ├── 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.


        Issue Links



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



                Zendesk Support