| Puppet Version: 7.3.0 In PUP-9176 we added 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. |