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 foundI 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 acase "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