fix(orbit): install dependency-free Linux build to fix glibc version errors

Problem

glab orbit local --install on Linux installs a dynamically-linked orbit binary that requires glibc symbol versions not present on older or minimal hosts. Specifically, the binary needs GLIBC >= 2.34, GLIBCXX >= 3.4.30, and CXXABI 1.3.13, and fails to start when the host provides older versions:

orbit: /lib64/libc.so.6: version `GLIBC_2.34' not found
orbit: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.30' not found
orbit: /lib64/libstdc++.so.6: version `CXXABI_1.3.13' not found

I hit this on the default Duo Agent Platform image (AlmaLinux 8, glibc 2.28). The same failure affects any host below the required symbol versions, including Alpine, distroless, and scratch containers.

Root cause

orbitAssetName() unconditionally installs the glibc-linked build (orbit-local-linux-<arch>.tar.gz). It should install a build that does not depend on the host's glibc at all.

Fix

The right fix is to install a build with no host glibc dependency. knowledge-graph already publishes exactly that: a fully static, zero-dependency Linux build (the -musl- variant, shipping since v0.65.1, see knowledge-graph#769). This MR updates orbitAssetName() to install that build on Linux.

The alternative - rebuilding the gnu binary against an older glibc floor - would need a knowledge-graph release change and would still be glibc-dependent (no help for Alpine/distroless/scratch). The static build already ships, so pointing glab at it is the smallest correct fix and works everywhere.

Platform Before After
Linux x86_64 orbit-local-linux-x86_64.tar.gz orbit-local-linux-musl-x86_64.tar.gz
Linux aarch64 orbit-local-linux-aarch64.tar.gz orbit-local-linux-musl-aarch64.tar.gz
macOS orbit-local-darwin-<arch>.tar.gz (unchanged)
Windows orbit-local-windows-<arch>.zip (unchanged)

The static tarball uses the same .tar.gz format with the same inner orbit binary name, so the extractor and installed-name paths are unchanged.

Scope

  • Updated orbitAssetName() with a case "linux" branch for the static build
  • Added a code comment with the rationale and a reference to knowledge-graph#769
  • Updated unit test assertions for the new Linux asset names
Edited by Dmitry Gruzd

Merge request reports

Loading