{"record":{"id":"1679c8be2393ce61","repo":"puppetlabs/puppet","slug":"could-not-action-module-name-no-releases-1679c8","errorCode":null,"errorMessage":"Could not %{action} '%{module_name}'; no releases are available from %{source}","messagePattern":"Could not %(.+?) '%(.+?)'; no releases are available from %(.+?)","errorType":"exception","errorClass":"Puppet::ModuleTool::Errors::NoCandidateReleasesError","httpStatus":null,"severity":"error","filePath":"lib/puppet/module_tool/applications/upgrader.rb","lineNumber":99,"sourceCode":"            rescue\n              []\n            end\n            if mod.has_metadata? && !changes.empty?\n              raise LocalChangesError,\n                    :action => :upgrade,\n                    :module_name => name,\n                    :requested_version => results[:requested_version],\n                    :installed_version => mod.version\n            end\n          end\n\n          Puppet::Forge::Cache.clean\n\n          # Ensure that there is at least one candidate release available\n          # for the target package.\n          available_versions = module_repository.fetch(name)\n          if available_versions.empty?\n            raise NoCandidateReleasesError, results.merge(:module_name => name, :source => module_repository.host)\n          elsif results[:requested_version] != :latest\n            requested = Puppet::Module.parse_range(results[:requested_version])\n            unless available_versions.any? { |m| requested.include? m.version }\n              raise NoCandidateReleasesError, results.merge(:module_name => name, :source => module_repository.host)\n            end\n          end\n\n          Puppet.notice _(\"Downloading from %{host} ...\") % { host: module_repository.host }\n          if @ignore_dependencies\n            graph = build_single_module_graph(name, version)\n          else\n            graph = build_dependency_graph(name, version)\n          end\n\n          unless forced?\n            add_module_name_constraints_to_graph(graph)\n          end\n","sourceCodeStart":81,"sourceCodeEnd":117,"githubUrl":"https://github.com/puppetlabs/puppet/blob/e227c27540975c25aa22d533a52424a9d2fc886a/lib/puppet/module_tool/applications/upgrader.rb#L81-L117","documentation":"Raised by the Upgrader as Puppet::ModuleTool::Errors::NoCandidateReleasesError when module_repository.fetch(name) returns an empty list, i.e. the configured module source (module_repository host, normally the Puppet Forge API) offers zero releases for that name. The message includes the host so you can tell whether the wrong repository was consulted.","triggerScenarios":"Running `puppet module upgrade <name>` after Puppet::Forge::Cache.clean when the Forge API returns no releases: module renamed or removed from the Forge, a custom module_repository in puppet.conf pointing at a mirror that lacks the module, or a name that never existed on that host.","commonSituations":"Modules renamed during the puppetlabs- rebrand; private Forge mirrors (Pulp, Artifactory proxy) not synced or missing the module; typo in the slug; DNS/hosts entry sending forgeapi traffic to the wrong internal host; module distributed only as a local tarball.","solutions":["Confirm the module exists on the source you are querying: open https://forge.puppet.com/modules/<name> or curl the API of your configured host","Check `puppet config print module_repository` and fix the setting if upgrades should hit the public Forge","If the module was renamed, upgrade under its new slug (and update dependents' metadata)","For locally packaged modules, skip upgrade and reinstall the tarball: `puppet module install ./pkg.tar.gz --force`"],"exampleFix":"# before\n$ puppet module upgrade puppet-example\n# Error: ... no releases are available from https://forgeapi.puppetlabs.com\n\n# after (module was renamed)\n$ puppet module uninstall puppet-example\n$ puppet module install puppetlabs-example","handlingStrategy":"try-catch","validationCode":"# Cheap pre-flight against the same source the upgrader uses\nrequire 'puppet/forge'\nreleases = Puppet::Forge.new(Puppet[:module_repository]).fetch(name)\nabort \"no releases for #{name} on #{Puppet[:module_repository]}\" if releases.empty?","typeGuard":null,"tryCatchPattern":"begin\n  result = Puppet::ModuleTool::Applications::Upgrader.new(name, options).run\nrescue Puppet::ModuleTool::Errors::NoCandidateReleasesError => e\n  log \"source #{Puppet[:module_repository]} has no releases for #{name}; falling back to local tarball install\"\n  Puppet::ModuleTool::Applications::Installer.new(\"./pkg/#{name}.tar.gz\", options).run\nend","preventionTips":["Verify module slugs exist on your configured repository before adding them to Puppetfiles","If using a private mirror, monitor its sync lag against the public Forge","Keep module_repository explicit in puppet.conf so failures name the right host"],"tags":["puppet","module-tool","upgrade","forge","no-releases","repository"],"backgroundTag":"package-not-found-in-repository","analyzedSha":"e227c27540975c25aa22d533a52424a9d2fc886a","analyzedAt":"2026-08-21T20:49:46.650Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}