{"record":{"id":"97b1bc61ae66a44d","repo":"jdx/mise","slug":"unsupported-os-version-os-ver","errorCode":null,"errorMessage":"unsupported OS version: {os_ver}","messagePattern":"unsupported OS version: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/plugins/core/erlang.rs","lineNumber":235,"sourceCode":"                    \"ubuntu22\" => \"ubuntu-22.04\".to_string(),\n                    \"ubuntu20\" => \"ubuntu-20.04\".to_string(),\n                    _ => os,\n                }\n            } else if let Some(os_release) = linux_os_release() {\n                format!(\"{}-{}\", os_release.id, os_release.version_id)\n            } else {\n                bail!(\"could not determine OS release\");\n            }\n        } else {\n            // Cross-platform Linux lock resolution cannot inspect the target\n            // distro, so use Bob's newest supported Ubuntu build.\n            \"ubuntu-24.04\".to_string()\n        };\n\n        // Currently, Bob only builds for Ubuntu, so we have to check that we're on Ubuntu,\n        // and on a supported version.\n        if ![\"ubuntu-20.04\", \"ubuntu-22.04\", \"ubuntu-24.04\"].contains(&os_ver.as_str()) {\n            bail!(\"unsupported OS version: {os_ver}\");\n        }\n        Ok(os_ver)\n    }\n\n    fn macos_asset_name(target: &PlatformTarget) -> Result<String> {\n        let arch = match target.arch_name() {\n            \"x64\" => \"x86_64\",\n            \"arm64\" => \"aarch64\",\n            other => bail!(\"unsupported architecture: {other}\"),\n        };\n        Ok(format!(\"otp-{arch}-apple-darwin.tar.gz\"))\n    }\n\n    fn windows_asset_name(version: &str, target: &PlatformTarget) -> Result<String> {\n        let os = match target.arch_name() {\n            \"x64\" => \"win64\",\n            \"x86\" => \"win32\",\n            other => bail!(\"unsupported architecture: {other}\"),","sourceCodeStart":217,"sourceCodeEnd":253,"githubUrl":"https://github.com/jdx/mise/blob/6f52dcdf99e282ef7a7db68c81301fa4618d0f79/src/plugins/core/erlang.rs#L217-L253","documentation":"Bob publishes OTP only for Ubuntu 20.04, 22.04, and 24.04. After resolving the distro string (ImageOS mapping like ubuntu24→ubuntu-24.04, or os-release `ID-VERSION_ID`), anything not in that list bails — debian-12, fedora-40, linuxmint-21.3, ubuntu-18.04, ubuntu-25.10, or an unmapped ImageOS value like ubuntu26. Non-fatal unless erlang.compile=false.","triggerScenarios":"`mise install erlang` with compile=false on Debian/Fedora/Arch/Rocky/Mint; GitHub Actions where `runs-on: ubuntu-latest` starts reporting a newer ImageOS (e.g. ubuntu26) after Ubuntu 26.04 ships; an Ubuntu version outside the supported window (18.04, 25.04+).","commonSituations":"`ubuntu-latest` rolling past the newest Bob-supported Ubuntu and breaking erlang installs overnight; corporate Debian-based CI images; Linux Mint desktops (ID=linuxmint).","solutions":["Pin CI to a supported runner: `runs-on: ubuntu-24.04` (not ubuntu-latest)","Rebuild the image on Ubuntu 20.04/22.04/24.04","Allow source builds on unsupported distros: `mise settings set erlang.compile true`"],"exampleFix":"# before (.github/workflows/ci.yml)\nruns-on: ubuntu-latest   # after 26.04 ships → unsupported OS version: ubuntu-26.04\n\n# after\nruns-on: ubuntu-24.04","handlingStrategy":"validation","validationCode":"# verify the distro is Bob-supported before a compile=false install\nOS_VER=\"$(. /etc/os-release; echo \"${ID}-${VERSION_ID}\")\"\ncase \"$OS_VER\" in\n  ubuntu-20.04|ubuntu-22.04|ubuntu-24.04) mise install erlang@27.1 ;;\n  *) echo \"unsupported distro for precompiled OTP: $OS_VER\" && mise settings set erlang.compile true && mise install erlang@27.1 ;;\nesac","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin runners to ubuntu-24.04 rather than ubuntu-latest in workflows that install erlang","Rebase custom images onto Ubuntu LTS within the 20.04–24.04 window"],"tags":["mise","erlang","ubuntu","os-version","debian","github-actions","precompiled"],"backgroundTag":"unsupported-os-version","analyzedSha":"6f52dcdf99e282ef7a7db68c81301fa4618d0f79","analyzedAt":"2026-08-22T10:14:23.840Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}