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
Listing versions for an aqua package backed by a GitHub release requires repo_owner and repo_name to build the GitHub release query. When the package config lacks either field, the backend cannot enumerate versions and throws this error naming the package id.
Solutions
- Add both `repo_owner` and `repo_name` to the aqua package config
- Check for key typos and for config schema changes after registry updates
- If the package is not GitHub-release-based, use the correct package type (e.g. http, github_content) with its own required fields
Example fix
# before
packages:
- type: github_release
repo_name: sometool
# after
packages:
- type: github_release
repo_owner: someowner
repo_name: sometool Defensive patterns
Strategy: validation
Validate before calling
if pkg.package_type() == AquaPackageType::GithubRelease && (pkg.repo_owner.is_none() || pkg.repo_name.is_none()) {
return Err(anyhow!("{} requires repo_owner and repo_name", pkg.id()));
} Type guard
fn github_release_fully_qualified(pkg: &AquaPackage) -> bool {
pkg.repo_owner.as_deref().map(|s| !s.is_empty()).unwrap_or(false)
&& pkg.repo_name.as_deref().map(|s| !s.is_empty()).unwrap_or(false)
} Try / catch
match backend.list_versions(&pkg_id).await {
Err(e) if e.to_string().contains("does not have repo_owner and/or repo_name") => {
eprintln!("add repo_owner and repo_name to the package config for {pkg_id}");
}
r => r?,
} Prevention
- For github_release packages always set both repo_owner and repo_name
- Validate custom registry entries after every schema change or registry update
- Watch for key renames in the aqua package config schema when upgrading
When it happens
Trigger: Calling the aqua backend's version-listing path for a package whose config (registry entry or override) is missing repo_owner and/or repo_name while the chosen branch expects a GitHub-release-style package.
Common situations: Hand-written custom aqua registry entry missing the repo fields; typo in the key name (e.g. `owner` instead of `repo_owner`); overriding a built-in package and dropping required fields.
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
- aqua var ` ` must be a string, got
- at least one bin path should exist
- conflicting aqua var
- github_content package requires `path`
- self_update.repository must be in owner/repository format…
AI-assisted analysis of jdx/mise@533346cc37 (2026-09-17).
Data as JSON: /api/errors/4b33c11f4e0be99e.
Report an issue: GitHub.
Appendix: source
Thrown at src/backend/aqua.rs:2227
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 533346cc37)