Skip to content

Pre-built binaries require GLIBC 2.29+, incompatible with older Linux systems #509

@Persephones-hades101

Description

@Persephones-hades101

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

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions