{"record":{"id":"2c53cf7991d8fcbc","repo":"puppetlabs/puppet","slug":"could-not-action-module-name-version","errorCode":null,"errorMessage":"Could not %{action} '%{module_name}' (%{version}); no version satisfies all dependencies","messagePattern":"Could not %(.+?) '%(.+?)' \\(%(.+?)\\); no version satisfies all dependencies","errorType":"exception","errorClass":"Puppet::ModuleTool::Errors::NoVersionsSatisfyError","httpStatus":null,"severity":"error","filePath":"lib/puppet/module_tool/applications/installer.rb","lineNumber":190,"sourceCode":"                dep_constraints = graph.dependencies[name].max.constraints\n\n                if dep_constraints.key?(e.unsatisfied)\n                  unsatisfied_range = dep_constraints[e.unsatisfied].first[1]\n                  constraints[e.unsatisfied] = unsatisfied_range\n                end\n              end\n\n              installed_module = @environment.module_by_forge_name(e.unsatisfied.tr('-', '/'))\n              current_version = installed_module.version if installed_module\n\n              unsatisfied = {\n                :name => e.unsatisfied,\n                :constraints => constraints,\n                :current_version => current_version\n              } if constraints.any?\n            end\n\n            raise NoVersionsSatisfyError, results.merge(\n              :requested_name => name,\n              :requested_version => options[:version] || graph.dependencies[name].max.version.to_s,\n              :unsatisfied => unsatisfied\n            )\n          end\n\n          unless forced?\n            # Check for module name conflicts.\n            releases.each do |rel|\n              installed_module = installed_modules_source.by_name[rel.name.split('-').last]\n              next unless installed_module\n              next if installed_module.has_metadata? && installed_module.forge_name.tr('/', '-') == rel.name\n\n              if rel.name != name\n                dependency = {\n                  :name => rel.name,\n                  :version => rel.version\n                }","sourceCodeStart":172,"sourceCodeEnd":208,"githubUrl":"https://github.com/puppetlabs/puppet/blob/e227c27540975c25aa22d533a52424a9d2fc886a/lib/puppet/module_tool/applications/installer.rb#L172-L208","documentation":"Installer raises Puppet::ModuleTool::NoVersionsSatisfyError when SemanticPuppet::Dependency.resolve raises UnsatisfiableGraph: there are releases for the module, but no combination of versions of it and its dependencies can satisfy every constraint (the module's own --version range plus version_requirement ranges of dependencies and already-installed modules). It captures the unsatisfied module name, the conflicting constraints, and the currently installed version when available.","triggerScenarios":"Installing with `--version '< 3.0.0'` while the module's dependencies require a newer version of another module than allowed; a dependency pinned by an already-installed module blocks the resolution; a dependency's version_requirement references a version range no published release of the dependency matches (common with legacy '>= 1.0.0' style ranges vs unavailable majors).","commonSituations":"Pinning old module versions in Puppetfiles while transitive deps moved on; Forge modules whose dependencies were yanked; long-lived control repos after dependency majors EOL; combining --version with existing installed sets that lock ranges.","solutions":["Loosen or remove the --version pin and let the resolver choose a compatible set.","Read the constraints in the error to find which module's range conflicts, then upgrade/downgrade that module explicitly to a version satisfying all ranges.","Uninstall or upgrade the already-installed module that contributes the blocking constraint.","As a last resort use --force with --ignore-dependencies (or fix the dependency's metadata) knowing dependency correctness is no longer guaranteed."],"exampleFix":"# before\npuppet module install puppetlabs-apache --version '>= 1.0.0 < 2.0.0'\n# dependency needs concat >= 2.0 but pinned concat 1.x installed\n\n# after\npuppet module upgrade puppetlabs-concat --version '>= 2.0.0' && \\\n  puppet module install puppetlabs-apache --version '>= 1.0.0 < 2.0.0'","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"begin\n  Puppet::ModuleTool::Applications::Installer.new(name, options).run\nrescue Puppet::ModuleTool::NoVersionsSatisfyError => e\n  # e.multiline_options[:unsatisfied] names the blocking module + constraints\n  adjust_pin_and_retry(e)\nend","preventionTips":["Avoid narrow --version pins on modules with many transitive dependencies.","Keep entire module sets consistent by upgrading groups together, not one module in isolation.","Periodically run `puppet module list --tree` in CI to catch unsatisfiable ranges before deploy."],"tags":["puppet","dependency-resolution","module-tool","version-conflict"],"backgroundTag":"dependency-resolution-failed","analyzedSha":"e227c27540975c25aa22d533a52424a9d2fc886a","analyzedAt":"2026-08-21T20:49:46.650Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}