[GH-ISSUE #509] Pre-built binaries require GLIBC 2.29+, incompatible with older Linux systems #175

Open
opened 2026-03-02 04:12:36 +03:00 by kerem · 0 comments
Owner

Originally created by @Persephones-hades101 on GitHub (Feb 12, 2026).
Original GitHub issue: https://github.com/git-ai-project/git-ai/issues/509

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-ai

The locally-built binary works perfectly with GLIBC 2.28.

Proposed Solutions

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, stripped

Additional 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
Originally created by @Persephones-hades101 on GitHub (Feb 12, 2026). Original GitHub issue: https://github.com/git-ai-project/git-ai/issues/509 # 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: ```bash $ 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: ```bash # 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-ai ``` The 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 ```bash $ 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, stripped ``` ## Additional 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: ```bash # 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 ```
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/git-ai#175
No description provided.