puppetlabs/puppet · error · Puppet::Error

No package found with the specified name [%{name}]

Error message

No package found with the specified name [%{name}]

What it means

Raised in the eix-backed `query` (lib/puppet/provider/package/portage.rb:225) on Gentoo: when the eix search yields zero parsed packages for the resource name, the provider raises Puppet::Error 'No package found with the specified name'. The name simply does not exist in the eix view of the portage tree.

Source

Thrown at lib/puppet/provider/package/portage.rb:225

        # This DOES NOT choose to install/upgrade or not, just provides current info
        # prefer checking versions to slots as versions are finer grained
        search = qatom[:pv]
        search = search + '-' + qatom[:pr] if qatom[:pr]
        if search
          package[:version_available] = eix_get_version_for_versions(package[:installable_versions], search)
          package[:ensure] = eix_get_version_for_versions(package[:installed_versions], search)
        elsif qatom[:slot]
          package[:version_available] = eix_get_version_for_slot(package[:slot_versions_available], qatom[:slot])
          package[:ensure] = eix_get_version_for_slot(package[:installed_slots], qatom[:slot])
        end

        package[:ensure] = package[:ensure] || :absent
        packages << package
      end

      case packages.size
      when 0
        raise Puppet::Error, _("No package found with the specified name [%{name}]") % { name: @resource[:name] }
      when 1
        @eix_result = packages[0]
      else
        raise Puppet::Error, _("More than one package with the specified name [%{search_value}], please use the category parameter to disambiguate") % { search_value: search_value }
      end
    rescue Puppet::ExecutionFailure => detail
      raise Puppet::Error, detail
    end
  end

  def latest
    query[:version_available]
  end

  private

  def eix_get_version_for_versions(versions, target)
    # [2.7.10-r1,2.7.12,3.4.3-r1,3.4.5,3.5.2] 3.5.2

View on GitHub (pinned to e227c27540)

Solutions

  1. Run `eix-update` on the node, then `eix --exact <name>` to confirm the package is findable.
  2. Fix the resource name, using `category/name` form for precision.
  3. Sync portage and any overlays so the tree actually contains the package.
  4. If the package is virtual/set, check whether it needs the @set syntax or a different provider.
Defensive patterns

Strategy: validation

Validate before calling

# Confirm the name resolves in eix before the agent run
eix-update >/dev/null 2>&1; eix --exact --only-names "${name}" | grep -q . || echo "name not found - fix manifest or sync tree"

Prevention

When it happens

Trigger: Typo in the package title; package not present in any configured repo or overlay; eix cache stale after adding an overlay or syncing portage (puppet only auto-runs eix-update when /usr/portage/metadata/timestamp is newer than the cache).

Common situations: Overlay added but eix cache never refreshed; package names copied from another distro; renamed/removed packages after a tree sync.

Related errors


AI-assisted analysis of puppetlabs/puppet@e227c27540 (2026-08-21). Data as JSON: /api/errors/2b3b6ad571bea781. Report an issue: GitHub.