jdx/mise · error

aqua package {} does not have repo_owner and/or repo_name.

Error message

aqua package {} does not have repo_owner and/or repo_name.

What it means

When listing versions for an aqua package of GitHub-release type, the code reads repo_owner and repo_name from the package definition to query releases. If either is missing, it cannot build the GitHub releases URL and bails naming the package id.

Source

Thrown at src/backend/aqua.rs:2146

                        for tag in tags.into_iter().rev() {
                            let (version, _) = match versioned_package_from_tag(
                                &pkg,
                                &tag,
                                target_os,
                                target_arch,
                                target_libc.as_deref(),
                            ) {
                                Ok(Some(versioned)) => versioned,
                                Ok(None) => continue,
                                Err(e) => {
                                    warn!("[{}] aqua version filter error: {e}", self.ba());
                                    continue;
                                }
                            };
                            versions.push((version, tag));
                        }
                    } else {
                        bail!(
                            "aqua package {} does not have repo_owner and/or repo_name.",
                            self.id
                        );
                    }
                    Ok(versions)
                },
                // Don't cache an empty tag list: the all-filtered happy path can
                // produce `[]` (valid repo, but no platform-matching release), and
                // a transient registry blip could too. Caching it would persist a
                // miss — same class as #9444 "don't cache empty version lists".
                |versions| !versions.is_empty(),
            )
            .await
    }

    /// Returns `(url, url_api, checked, digest)` where `url_api` is the GitHub API asset
    /// endpoint used as a download fallback for private repositories.
    async fn get_url(

View on GitHub (pinned to afd2eddd3a)

Solutions

  1. Add both `repo_owner` and `repo_name` to the aqua package TOML.
  2. Correct misspelled keys and re-validate against the aqua package schema.
  3. Fix or pin the upstream aqua-registry entry if the omission comes from the registry rather than local config.

Example fix

// before
[package]
name = "example"
repo_owner = "example-org"   # repo_name missing
// after
[package]
name = "example"
repo_owner = "example-org"
repo_name = "example"
Defensive patterns

Strategy: validation

Validate before calling

fn github_release_ok(pkg: &toml::Value) -> bool {
    pkg.get("repo_owner").and_then(|v| v.as_str()).map(|s| !s.is_empty()).unwrap_or(false)
        && pkg.get("repo_name").and_then(|v| v.as_str()).map(|s| !s.is_empty()).unwrap_or(false)
}

Try / catch

match list_versions(pkg) {
    Ok(vs) => use(vs),
    Err(e) if e.to_string().contains("repo_owner and/or repo_name") => {
        eprintln!("add repo_owner and repo_name to the package TOML");
    }
    Err(e) => return Err(e),
}

Prevention

When it happens

Trigger: Version listing for an aqua package whose TOML omits repo_owner or repo_name (only one set, or neither).

Common situations: Copied/merged aqua package entry missing an owner or name; typo like repoName; registry entry for an HTTP-type package mistakenly treated as a GitHub-release package.

Understand the failure class

Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.

Related errors


AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09). Data as JSON: /api/errors/4b33c11f4e0be99e. Report an issue: GitHub.