{"record":{"id":"45b2f2951c689044","repo":"jdx/mise","slug":"mise-oci-currently-supports-only-apt-and-apk-entri","errorCode":null,"errorMessage":"mise oci currently supports only apt and apk entries in [bootstrap.packages]; unsupported manager(s): {}","messagePattern":"mise oci currently supports only apt and apk entries in \\[bootstrap\\.packages\\]; unsupported manager\\(s\\): (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/oci/packages.rs","lineNumber":192,"sourceCode":"    managers: &[ManagerPackages],\n) -> Result<Option<(OciPackageManager, Vec<PackageRequest>)>> {\n    let mut apk = vec![];\n    let mut apt = vec![];\n    let mut unsupported = vec![];\n    for mgr in managers {\n        if mgr.disabled || mgr.requests.is_empty() {\n            continue;\n        }\n        match mgr.manager.name() {\n            \"apk\" => apk.extend(mgr.requests.clone()),\n            \"apt\" => apt.extend(mgr.requests.clone()),\n            other => unsupported.push(other.to_string()),\n        }\n    }\n    if !unsupported.is_empty() {\n        unsupported.sort();\n        unsupported.dedup();\n        bail!(\n            \"mise oci currently supports only apt and apk entries in [bootstrap.packages]; \\\n             unsupported manager(s): {}\",\n            unsupported.join(\", \")\n        );\n    }\n    if !apk.is_empty() && !apt.is_empty() {\n        bail!(\n            \"mise oci cannot mix apk and apt entries in [bootstrap.packages]; use the package \\\n             manager matching the selected base image\"\n        );\n    }\n    if !apk.is_empty() {\n        Ok(Some((OciPackageManager::Apk, apk)))\n    } else if !apt.is_empty() {\n        Ok(Some((OciPackageManager::Apt, apt)))\n    } else {\n        Ok(None)\n    }","sourceCodeStart":174,"sourceCodeEnd":210,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/oci/packages.rs#L174-L210","documentation":"mise's OCI bootstrap supports only apt and apk as system package managers. `[bootstrap.packages]` is a table keyed by manager name; any other key (e.g. dnf, pacman, zypper, brew) is collected, sorted/deduped, and reported in this error. It fires before any packages are installed.","triggerScenarios":"Configuring `[bootstrap.packages]` in a mise.toml with keys other than `apt` or `apk`, then running an oci build — `collect_package_requests` buckets entries and bails on unknown keys.","commonSituations":"Typos like `apks` or `aptd`; copying package-manager names from other ecosystems (dnf, yum, pacman, brew, npm) into bootstrap.packages; migrating config from another image-builder.","solutions":["Rename unsupported keys in `[bootstrap.packages]` to `apt` or `apk`","Move non-system dependencies out of bootstrap.packages (use mise tools/config for those)","Split the image build: bake distro packages needing another manager into a base image and reference it"],"exampleFix":"// before (mise.toml)\n[bootstrap.packages]\ndnf = [\"curl\"]\n// after\n[bootstrap.packages]\napt = [\"curl\"]","handlingStrategy":"validation","validationCode":"# validate bootstrap.packages keys before building\ntomlq -r '.bootstrap.packages | keys[]' mise.toml | grep -vE '^(apt|apk)$' \\\n  && echo \"unsupported package manager in [bootstrap.packages]\" || true","typeGuard":null,"tryCatchPattern":"match build() {\n    Err(e) if e.to_string().contains(\"supports only apt and apk\") => {\n        eprintln!(\"fix [bootstrap.packages] keys to apt/apk only\");\n    }\n    r => r,\n}","preventionTips":["Only use `apt` and `apk` keys in [bootstrap.packages]","Add config linting to CI to catch typos like dnf/yum/pacman","Bake other package managers' packages into a custom base image","Check docs for the supported manager list before adding entries"],"tags":["oci","config","packages","validation"],"backgroundTag":"unsupported-config-value","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}