-
Notifications
You must be signed in to change notification settings - Fork 73
Description
Issue: Pre-built binaries require GLIBC 2.29+, incompatible with older Linux systems
Environment
- OS: CentOS 8 / RHEL 8 (GLIBC 2.28)
- git-ai version: v1.1.2 (latest pre-built binary)
- Installation method:
curl -sSL https://usegitai.com/install.sh | bash
Problem
The pre-built Linux binaries fail to run on systems with GLIBC 2.28 or earlier:
$ git-ai --version
/users/sudhasi2/.git-ai/bin/git-ai: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by /users/sudhasi2/.git-ai/bin/git-ai)
/users/sudhasi2/.git-ai/bin/git-ai: /lib64/libc.so.6: version `GLIBC_2.29' not found (required by /users/sudhasi2/.git-ai/bin/git-ai)
/users/sudhasi2/.git-ai/bin/git-ai: /lib64/libc.so.6: version `GLIBC_2.30' not found (required by /users/sudhasi2/.git-ai/bin/git-ai)Installation completes successfully but the binary is unusable.
Impact
This affects users on:
- CentOS 8 / RHEL 8 (GLIBC 2.28)
- Debian 10 (GLIBC 2.28)
- Ubuntu 18.04 LTS (GLIBC 2.27)
- Other enterprise Linux systems with older GLIBC versions
These systems are still widely deployed in corporate environments.
Current Workaround
Building from source works fine:
# Install Rust
export CARGO_HOME=/workspace/rust/cargo
export RUSTUP_HOME=/workspace/rust/rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh -s -- -y --no-modify-path
# Build git-ai
git clone https://github.com/git-ai-project/git-ai.git
cd git-ai
cargo build --release
cp target/release/git-ai ~/.git-ai/bin/git-aiThe locally-built binary works perfectly with GLIBC 2.28.
Proposed Solutions
Option 1: Build on older system (Recommended)
Build pre-built binaries on a system with GLIBC 2.27 or 2.28. Binaries built against older GLIBC versions work on newer systems (forward compatibility).
Option 2: Provide multiple binary versions
Offer separate downloads for different GLIBC versions:
git-ai-linux-x64(GLIBC 2.29+)git-ai-linux-x64-glibc2.27(for older systems)
Option 3: Static linking
Statically link GLIBC to avoid runtime dependencies (may increase binary size).
System Information
$ ldd --version
ldd (GNU libc) 2.28
Copyright (C) 2018 Free Software Foundation, Inc.
$ file ~/.git-ai/bin/git-ai
ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked,
interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=5f7c76dd00e1d17efc1444094e464cf9d751b4db, strippedAdditional Context
The installation script doesn't check GLIBC version before downloading, leading to a confusing experience where installation "succeeds" but the binary doesn't work.
Adding a GLIBC version check to the installer would provide better UX:
# In install.sh
MIN_GLIBC="2.29"
CURRENT_GLIBC=$(ldd --version | head -n1 | grep -oP '\d+\.\d+$')
if [ "$(printf '%s\n' "$MIN_GLIBC" "$CURRENT_GLIBC" | sort -V | head -n1)" != "$MIN_GLIBC" ]; then
echo "Error: GLIBC $MIN_GLIBC+ required, found $CURRENT_GLIBC"
echo "Please build from source: https://github.com/git-ai-project/git-ai"
exit 1
fi