jdx/mise · error

no precompiled ruby is available for this platform To compil

Error message

no precompiled ruby is available for this platform
To compile ruby from source, run: mise settings ruby.compile=true

What it means

mise's ruby core plugin filters its remote version list (jdx/ruby GitHub releases) down to versions that ship precompiled binaries whenever `ruby.compile = false` (precompiled-only mode). retain_precompiled_versions first maps the host to a platform identifier via precompiled_platform(); only `macos` (arm64), `arm64_linux`, and `x86_64_linux` exist (unless ruby.precompiled-arch/os overrides are set). On any other OS/arch the platform is None and listing aborts with this error instead of silently offering versions that can never install without compiling.

Source

Thrown at src/plugins/core/ruby.rs:648

        )))
    }

    /// Restrict a version list to versions that have a precompiled binary for this platform.
    ///
    /// Entries are only removed, never reordered, so `latest` and prefix resolution keep the
    /// same ordering semantics as a source install.
    async fn retain_precompiled_versions(
        &self,
        versions: Vec<VersionInfo>,
    ) -> Result<Vec<VersionInfo>> {
        let settings = Settings::get();
        let source = &settings.ruby.precompiled_url;
        if source.contains("://") {
            // A URL template can't be enumerated, so every version is assumed available.
            return Ok(versions);
        }
        let Some(platform) = self.precompiled_platform() else {
            bail!(
                "no precompiled ruby is available for this platform\n\
                 To compile ruby from source, run: mise settings ruby.compile=true"
            );
        };
        // Only the releases `list_releases` returns are considered. Without
        // MISE_LIST_ALL_VERSIONS that is the most recent page, which is where the
        // precompiled builds live.
        let releases = github::list_releases(source).await?;
        let available = Self::precompiled_versions_from_releases(
            &releases,
            Self::source_requires_build_revision(source),
            &platform,
        );
        Ok(versions
            .into_iter()
            .filter(|v| available.contains(&v.version))
            .collect())
    }

View on GitHub (pinned to 6f52dcdf99)

Solutions

  1. Set `mise settings ruby.compile=true` (or delete the ruby.compile=false setting) so listing includes source-buildable versions and installs fall back to ruby-build
  2. If you must stay precompiled-only, add explicit overrides, e.g. `mise settings ruby.precompiled_arch=x86_64` and `ruby.precompiled_os=linux`, matching an asset platform that actually exists in jdx/ruby releases
  3. On an Intel Mac or exotic-arch Linux, accept that no precompiled ruby exists: compile from source or run under Rosetta/a supported environment (e.g. arm64/x86_64 Linux container)
  4. Pin an already-installed local version (`mise use ruby@3.3.6` with the version already in ~/.local/share/mise/installs) so no remote listing is needed

Example fix

# before
mise settings ruby.compile=false
mise use ruby@latest   # -> no precompiled ruby is available for this platform

# after
mise settings ruby.compile=true
mise use ruby@latest
Defensive patterns

Strategy: validation

Validate before calling

# before enabling precompiled-only ruby, confirm this platform has precompiled builds:
uname -s   # must be Darwin (arm64) or Linux
uname -m   # must be arm64/aarch64 or x86_64
# or let mise tell you directly — this lists only versions with binaries:
mise ls-remote ruby >/dev/null || mise settings ruby.compile=true

Prevention

When it happens

Trigger: Settings contain `ruby.compile = false` and the host is x86_64 macOS, an exotic Linux arch (e.g. armv7, riscv64, s390x), or a non-macOS/non-Linux unix. Any remote version enumeration then hits it: `mise ls-remote ruby`, `mise use ruby@latest`, `mise install ruby` resolving a fuzzy version.

Common situations: Intel Mac users who opted out of source compilation; CI on niche architectures or containers emulated with QEMU; users who copied a dotfiles mise.toml with ruby.compile=false onto an unsupported machine; overrides like ruby.precompiled-os set to a value the jdx/ruby release assets don't cover.

Related errors


AI-assisted analysis of jdx/mise@6f52dcdf99 (2026-08-22). Data as JSON: /api/errors/a8ea0c1f55a92d29. Report an issue: GitHub.