nikivdev/code · error
Unsupported Linux architecture
Error message
Unsupported Linux architecture
What it means
Raised by `detect_release_target` when running on Linux but the compiled architecture is neither x86_64 nor aarch64; the updater cannot map the platform to a published release artifact (x86_64-unknown-linux-gnu / aarch64-unknown-linux-gnu).
Source
Thrown at src/upgrade.rs:155
/// Detect the current platform (os, arch).
fn detect_release_target() -> Result<&'static str> {
if cfg!(target_os = "macos") {
if cfg!(target_arch = "x86_64") {
return Ok("x86_64-apple-darwin");
}
if cfg!(target_arch = "aarch64") {
return Ok("aarch64-apple-darwin");
}
bail!("Unsupported macOS architecture");
}
if cfg!(target_os = "linux") {
if cfg!(target_arch = "x86_64") {
return Ok("x86_64-unknown-linux-gnu");
}
if cfg!(target_arch = "aarch64") {
return Ok("aarch64-unknown-linux-gnu");
}
bail!("Unsupported Linux architecture");
}
bail!("Unsupported operating system for self-upgrade (only macOS/Linux supported)");
}
fn detect_legacy_platform() -> Result<(&'static str, &'static str)> {
let os = if cfg!(target_os = "macos") {
"darwin"
} else if cfg!(target_os = "linux") {
"linux"
} else {
bail!("Unsupported operating system for self-upgrade (only macOS/Linux supported)");
};
let arch = if cfg!(target_arch = "aarch64") {
"arm64"
} else if cfg!(target_arch = "x86_64") {
"amd64"View on GitHub (pinned to a747e741ae)
Solutions
- Install a build made for x86_64-unknown-linux-gnu or aarch64-unknown-linux-gnu.
- On 64-bit capable hardware (e.g. newer Raspberry Pi), switch to a 64-bit OS so target_arch is aarch64.
- Perform manual updates (download releases yourself) instead of self-upgrade.
Defensive patterns
Strategy: fallback
Validate before calling
fn is_supported_linux_arch() -> bool {
matches!(std::env::consts::ARCH, "x86_64" | "aarch64")
}
if !is_supported_linux_arch() {
eprintln!("self-upgrade unsupported on this Linux arch; update manually");
return;
} Try / catch
match detect_release_target() {
Ok(target) => { /* download target asset */ }
Err(e) if e.to_string().contains("Unsupported Linux") => {
eprintln!("build/install x86_64 or aarch64 Linux binary instead");
}
Err(e) => return Err(e),
} Prevention
- Check `uname -m` (should be x86_64 or aarch64) before self-upgrading.
- On Raspberry Pi, run a 64-bit OS to get aarch64.
- Use gnu-target (not musl) official assets, or update manually otherwise.
- Document supported platform matrix for your users.
When it happens
Trigger: Self-upgrade (`run`) on Linux with a build targeting arm 32-bit, riscv, powerpc, musl/non-glibc variant arches, etc.
Common situations: Running on Raspberry Pi (32-bit arm), embedded boards, or niche architectures; alpine/musl builds expecting a different artifact triple.
Related errors
- Unsupported macOS architecture
- Unsupported architecture
- clipboard command exited with status {}
- upgrade source repo not configured. Set FLOW_UPGRADE_REPO=ow
- Unsupported operating system for self-upgrade (only macOS/Li
AI-assisted analysis of nikivdev/code@a747e741ae (2026-09-01).
Data as JSON: /api/errors/06551b85b43114e8.
Report an issue: GitHub.