{"record":{"id":"8394ab178fdc3145","repo":"jdx/mise","slug":"could-not-identify-the-libc-provided-by-remote-loa","errorCode":null,"errorMessage":"could not identify the libc provided by remote loader {interpreter} on '{}'; set mise_bin, remote_mise, or bootstrap_command","messagePattern":"could not identify the libc provided by remote loader (.+?) on '(.+?)'; set mise_bin, remote_mise, or bootstrap_command","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/remote.rs","lineNumber":1774,"sourceCode":"    );\n    let remote_output = session.output_async(&[\"sh\", \"-c\", &check]).await?;\n    if remote_output\n        .lines()\n        .any(|line| line == \"MISE_LOADER_MISSING\")\n    {\n        bail!(\n            \"remote host '{}' does not provide the dynamic loader required by local mise: {interpreter}; set mise_bin, remote_mise, or bootstrap_command\",\n            session.host.name\n        );\n    }\n    let remote_libc = parse_libc_flavor(&remote_output).ok_or_else(|| {\n        eyre!(\n            \"could not identify the libc provided by remote loader {interpreter} on '{}'; set mise_bin, remote_mise, or bootstrap_command\",\n            session.host.name\n        )\n    })?;\n    if local_libc != remote_libc {\n        bail!(\n            \"remote host '{}' libc {remote_libc:?} is incompatible with local mise libc {local_libc:?}; set mise_bin, remote_mise, or bootstrap_command\",\n            session.host.name\n        );\n    }\n    let required = match local_libc {\n        LibcFlavor::Glibc => max_required_glibc_version(&binary_bytes).ok_or_else(|| {\n            eyre!(\n                \"could not determine the glibc ABI required by local mise; set mise_bin, remote_mise, or bootstrap_command\"\n            )\n        })?,\n        LibcFlavor::Musl => parse_musl_runtime_version(&combined_output(&local_output))\n            .ok_or_else(|| {\n                eyre!(\n                    \"could not determine the musl version used by local mise loader {interpreter}; set mise_bin, remote_mise, or bootstrap_command\"\n                )\n            })?,\n    };\n    let available = match remote_libc {","sourceCodeStart":1756,"sourceCodeEnd":1792,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/system/remote.rs#L1756-L1792","documentation":"The remote host does have a dynamic loader, but the probe could not classify it as glibc or musl (parse_libc_flavor returned nothing for the interpreter output). mise must know the remote libc family to compare it against the local binary's requirements and choose a compatible artifact.","triggerScenarios":"`mise rsync`/push against a remote where the loader probe output doesn't parse — e.g. a musl loader present but ldd/--version output in unexpected format, uclibc or other niche libc, patched/renamed loaders, or interpreter strings pointing to non-standard paths.","commonSituations":"Embedded Linux systems, alternative libcs (uclibc-ng), NixOS or Gentoo systems with unusual loader layouts, or containers with partially removed libc tooling.","solutions":["Set `remote_mise`/`mise_bin` to a known-compatible binary, skipping libc matching","Install standard glibc or musl tooling (ldd, loader at canonical path) on the remote","Provide `bootstrap_command` that installs a static (musl) mise build independent of the remote libc","Normalize the remote environment so the loader sits at its canonical path"],"exampleFix":"# before\n[remote]\nhost = \"root@uclibc-box\"\n\n# after\n[remote]\nhost = \"root@uclibc-box\"\nmise_bin = \"/opt/bin/mise\"  # static musl binary, libc matching skipped","handlingStrategy":"fallback","validationCode":"# confirm the remote libc is classifiable before relying on auto-matching\nssh \"$HOST\" 'ldd --version 2>&1 | head -1' | grep -qiE 'glibc|musl' || echo \"unclassifiable libc; configure remote_mise/mise_bin\" >&2","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Standardize remote hosts on glibc or musl","Avoid niche libcs (uclibc) for mise-managed hosts, or preinstall mise there","Keep loaders at canonical paths (no custom Nix/Gentoo layouts) for auto-detection","Set bootstrap_command for hosts with nonstandard libc setups"],"tags":["remote","libc","detection-failure"],"backgroundTag":"unsupported-platform","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}