denoland/deno · error
No Debian architecture mapping for arch '{other}'; supported
Error message
No Debian architecture mapping for arch '{other}'; supported: x86_64, aarch64 What it means
Debian (.deb) packaging needs the Debian architecture name, which differs from the target triple's arch component (x86_64 -> amd64, aarch64 -> arm64). Only those two mappings exist; any other leading triple component — or an unusual host arch when --target is omitted — bails.
Source
Thrown at cli/tools/desktop.rs:3918
"deno.json `version` \"{version}\" cannot be used as a Debian/RPM package version: the character '{c}' is not allowed (only alphanumerics, '.', '+', '-' and '~')"
);
}
Ok(version.replace('-', "~"))
}
/// Map a target triple (or the host arch when `target` is None) to a Debian
/// architecture name. Debian arch names differ from the triple's leading
/// component (`x86_64` → `amd64`, `aarch64` → `arm64`).
fn debian_arch_for_target(
target: Option<&str>,
) -> Result<&'static str, AnyError> {
let arch = target
.and_then(|t| t.split('-').next())
.unwrap_or(std::env::consts::ARCH);
match arch {
"x86_64" => Ok("amd64"),
"aarch64" => Ok("arm64"),
other => bail!(
"No Debian architecture mapping for arch '{other}'; supported: x86_64, aarch64"
),
}
}
/// Map a target triple (or the host arch) to an RPM architecture name. RPM
/// keeps the triple's arch names (`x86_64`, `aarch64`).
fn rpm_arch_for_target(target: Option<&str>) -> Result<&'static str, AnyError> {
let arch = target
.and_then(|t| t.split('-').next())
.unwrap_or(std::env::consts::ARCH);
match arch {
"x86_64" => Ok("x86_64"),
"aarch64" => Ok("aarch64"),
other => bail!(
"No RPM architecture mapping for arch '{other}'; supported: x86_64, aarch64"
),
}View on GitHub (pinned to f7822238ca)
Solutions
- Target a supported triple: x86_64-unknown-linux-gnu (-> amd64) or aarch64-unknown-linux-gnu (-> arm64).
- Always pass --target explicitly in CI so packaging doesn't depend on the runner's arch.
- For unsupported arches, skip the deb format and ship a tarball.
Example fix
# before deno desktop --target i686-unknown-linux-gnu --deb # after deno desktop --target x86_64-unknown-linux-gnu --deb
Defensive patterns
Strategy: validation
Validate before calling
case "${TARGET%%-*}" in
x86_64|aarch64) ;;
*) echo "deb packaging supports x86_64 (amd64) and aarch64 (arm64) only"; exit 1 ;;
esac Type guard
function isSupportedDebArch(target: string): boolean {
const a = target.split("-")[0];
return a === "x86_64" || a === "aarch64";
} Prevention
- Set --target explicitly for .deb builds so arch never silently follows the host.
- Document the amd64/arm64 mapping in release docs to avoid guessing triple names.
When it happens
Trigger: `deno desktop` building a .deb with --target whose arch component isn't x86_64 or aarch64 (e.g. armv7-*, i686-*), or no --target on a host of another arch.
Common situations: Cross-packaging for ARM SBCs or 32-bit systems from CI; building on niche-arch hosts without an explicit target.
Related errors
- No bundled AppImage runtime for arch '{other}'; supported: x
- No RPM architecture mapping for arch '{other}'; supported: x
- No MSI architecture mapping for arch '{other}'; supported: x
- no .desktop file found in {}
- app name {app_name:?} resolves its runtime library to {runti
AI-assisted analysis of denoland/deno@f7822238ca (2026-08-20).
Data as JSON: /api/errors/b480cc919621fd50.
Report an issue: GitHub.