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
- Add both `repo_owner` and `repo_name` to the aqua package TOML.
- Correct misspelled keys and re-validate against the aqua package schema.
- 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
- Always define both repo_owner and repo_name for GitHub-release aqua packages.
- Validate package TOML against the aqua schema.
- Diff upstream registry updates for renamed/removed fields.
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
- conflicting aqua var `{key}`: use only one spelling
- github_content package requires `path`
- aqua var `{}` must be a string, got {}
- GitHub OAuth is not configured. Set github.oauth_client_id f
- GitHub OAuth is configured for {}, not {}
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/4b33c11f4e0be99e.
Report an issue: GitHub.