jdx/mise · error
unsupported OS version: {os_ver}
Error message
unsupported OS version: {os_ver} What it means
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.
Source
Thrown at src/plugins/core/erlang.rs:235
"ubuntu22" => "ubuntu-22.04".to_string(),
"ubuntu20" => "ubuntu-20.04".to_string(),
_ => os,
}
} else if let Some(os_release) = linux_os_release() {
format!("{}-{}", os_release.id, os_release.version_id)
} else {
bail!("could not determine OS release");
}
} else {
// Cross-platform Linux lock resolution cannot inspect the target
// distro, so use Bob's newest supported Ubuntu build.
"ubuntu-24.04".to_string()
};
// Currently, Bob only builds for Ubuntu, so we have to check that we're on Ubuntu,
// and on a supported version.
if !["ubuntu-20.04", "ubuntu-22.04", "ubuntu-24.04"].contains(&os_ver.as_str()) {
bail!("unsupported OS version: {os_ver}");
}
Ok(os_ver)
}
fn macos_asset_name(target: &PlatformTarget) -> Result<String> {
let arch = match target.arch_name() {
"x64" => "x86_64",
"arm64" => "aarch64",
other => bail!("unsupported architecture: {other}"),
};
Ok(format!("otp-{arch}-apple-darwin.tar.gz"))
}
fn windows_asset_name(version: &str, target: &PlatformTarget) -> Result<String> {
let os = match target.arch_name() {
"x64" => "win64",
"x86" => "win32",
other => bail!("unsupported architecture: {other}"),View on GitHub (pinned to 6f52dcdf99)
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`
Example fix
# before (.github/workflows/ci.yml) runs-on: ubuntu-latest # after 26.04 ships → unsupported OS version: ubuntu-26.04 # after runs-on: ubuntu-24.04
Defensive patterns
Strategy: validation
Validate before calling
# verify the distro is Bob-supported before a compile=false install
OS_VER="$(. /etc/os-release; echo "${ID}-${VERSION_ID}")"
case "$OS_VER" in
ubuntu-20.04|ubuntu-22.04|ubuntu-24.04) mise install erlang@27.1 ;;
*) echo "unsupported distro for precompiled OTP: $OS_VER" && mise settings set erlang.compile true && mise install erlang@27.1 ;;
esac Prevention
- 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
When it happens
Trigger: `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+).
Common situations: `ubuntu-latest` rolling past the newest Bob-supported Ubuntu and breaking erlang installs overnight; corporate Debian-based CI images; Linux Mint desktops (ID=linuxmint).
Related errors
- precompiled erlang is not available: {reason}
- precompiled erlang is not supported on musl linux
- unsupported architecture: {other}
- could not determine OS release
- precompiled erlang is not supported on {os}
AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22).
Data as JSON: /api/errors/97b1bc61ae66a44d.
Report an issue: GitHub.