{"record":{"id":"f32b9f3c2fffa027","repo":"jdx/mise","slug":"unsupported-env-supported","errorCode":null,"errorMessage":"unsupported env: {}/{} (supported: {:?})","messagePattern":"unsupported env: (.+?)/(.+?) \\(supported: (.+?)\\)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/backend/aqua.rs","lineNumber":5006,"sourceCode":"    let releases = github::list_releases_including_prereleases(&repo).await?;\n    Ok(releases\n        .into_iter()\n        .map(|r| {\n            let released_at = r.released_at().to_string();\n            (r.tag_name, Some(released_at), Some(r.prerelease))\n        })\n        .collect())\n}\n\nfn validate(pkg: &AquaPackage, version: &str) -> Result<()> {\n    if pkg.no_asset.unwrap_or(false) {\n        bail!(\"no asset released\");\n    }\n    if let Some(message) = &pkg.error_message {\n        bail!(\"{}\", message);\n    }\n    if !is_platform_supported(&pkg.supported_envs, os(), arch()) {\n        bail!(\n            \"unsupported env: {}/{} (supported: {:?})\",\n            os(),\n            arch(),\n            pkg.supported_envs\n        );\n    }\n    match pkg.package_type() {\n        AquaPackageType::Cargo => {\n            bail!(\n                \"package type `cargo` is not supported in the aqua backend. Use the cargo backend instead{}.\",\n                pkg.crate_name\n                    .as_deref()\n                    .filter(|name| !name.is_empty())\n                    .or_else(|| {\n                        pkg.name\n                            .as_deref()\n                            .and_then(|s| s.strip_prefix(\"crates.io/\"))\n                    })","sourceCodeStart":4988,"sourceCodeEnd":5024,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/backend/aqua.rs#L4988-L5024","documentation":"Each aqua registry package can restrict which OS/arch combinations it supports via `supported_envs`. validate() checks the current runtime environment (os(), arch()) against that list and bails with 'unsupported env: <os>/<arch> (supported: [...])' when the current platform is not in it.","triggerScenarios":"Installing an aqua package on a platform the registry entry excludes (src/backend/aqua.rs:5006), e.g. linux-arm64 for a tool that only ships x86_64 binaries, or windows when the entry lists only unix targets.","commonSituations":"Running mise on ARM Linux/macOS for tools with x86_64-only releases; Windows where the project publishes no Windows binaries; musl vs glibc-style restrictions encoded in supported_envs; FreeBSD/other niche platforms.","solutions":["Install via emulation/compat layer (e.g. Rosetta on Apple Silicon) and configure mise's arch override if applicable","Use a different backend that can build the tool from source for your platform","Check the printed supported list and switch to a tool version or fork with assets for your platform","Update mise — newer registry entries may have broadened supported_envs"],"exampleFix":"# before — unsupported on linux/arm64\n[tools]\naqua:owner/repo = \"latest\"\n\n# after — build from source for the platform\n[tools]\ncargo:owner-repo-cli = \"latest\"","handlingStrategy":"validation","validationCode":"// check platform support before installing on this machine\nconst pkg = await fetchAquaRegistryEntry(pkgName);\nconst env = `${process.platform === \"darwin\" ? \"darwin\" : \"linux\"}/${process.arch === \"arm64\" ? \"arm64\" : \"amd64\"}`;\nif (pkg.supported_envs?.length && !pkg.supported_envs.some(e => e === env || e === env.split(\"/\")[0] + \"/*\")) {\n  console.warn(`${pkgName} does not support ${env}; supported: ${pkg.supported_envs}`);\n}","typeGuard":null,"tryCatchPattern":"try {\n  await $`mise install aqua:owner/repo`;\n} catch (e) {\n  if (String(e).includes(\"unsupported env:\")) {\n    // switch to a source build for this platform\n    await $`mise use cargo:${crateName}`;\n  } else throw e;\n}","preventionTips":["Check supported_envs in the aqua registry entry when developing on ARM Linux, Apple Silicon, or Windows","Provide per-platform tool selections in mise.toml ([tools] with platform-specific files or env overrides)","Test tool installs on all target platforms in CI before standardizing on an aqua: pin"],"tags":["aqua","platform","supported-envs"],"backgroundTag":"unsupported-platform","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}