Skip to content

npm install prebuilt Linux binary fails on older glibc (requires ≥2.39, e.g. CentOS 7/8, RHEL 7/8, TencentOS) #555

@staryxchen

Description

@staryxchen

Description

After npm install -g deepseek-tui, the downloaded prebuilt binary fails to start on Linux distributions with glibc older than 2.39:

/root/.npm/node_modules/lib/node_modules/deepseek-tui/bin/downloads/deepseek:
/lib64/libm.so.6: version `GLIBC_2.29' not found
/lib64/libc.so.6: version `GLIBC_2.29' not found
...
/lib64/libc.so.6: version `GLIBC_2.39' not found

Root cause

The prebuilt Linux binaries are compiled on ubuntu-latest (currently Ubuntu 24.04, glibc 2.39). The resulting binaries link against glibc 2.39 symbols and will not run on any distribution with an older glibc.

This affects a broad range of enterprise Linux distributions still in wide use:

Distribution glibc version
RHEL/CentOS 7 2.17
RHEL/CentOS 8 / TencentOS 3 2.28
Debian 10 (buster) 2.28
Debian 11 (bullseye) 2.31
Ubuntu 20.04 2.31
Ubuntu 22.04 2.35

All of these are excluded by the current build configuration.

Steps to reproduce

  1. On any Linux system with glibc < 2.39 (e.g. TencentOS 3.2 / CentOS 8 / Ubuntu 22.04)
  2. Run npm install -g deepseek-tui
  3. Run deepseek-tui
  4. Observe the GLIBC_X.YY not found errors

Expected behavior

Either:

  • The prebuilt binary runs on a wider range of glibc versions (ideally ≥2.28, covering RHEL 8+), or
  • The npm postinstall script detects the glibc version and gives a clear error message directing users to build from source (cargo install deepseek-tui)

Possible fix directions

  1. Build with an older glibc target — use ubuntu-22.04 runner (glibc 2.35) or ubuntu-20.04 (glibc 2.31) in the release workflow, or add a dedicated build job on an older runner for maximum compatibility.

  2. Use cross with a CentOS 7 image — build against CentOS 7 sysroot (glibc 2.17) via cross or cargo-zigbuild for maximum backward compatibility.

  3. Static linking — link musl statically (x86_64-unknown-linux-musl) to eliminate the glibc dependency entirely.

  4. At minimum — document the minimum glibc version requirement in README, INSTALL.md, and print a clear error message in the npm postinstall script when the host glibc is too old.

Environment

  • OS: TencentOS Server 3.2 (RHEL/CentOS 8 compatible)
  • glibc: 2.28
  • deepseek-tui version: latest (via npm)
  • Install method: npm install -g deepseek-tui

Metadata

Metadata

Assignees

No one assigned

    Labels

    v0.8.10Targeting v0.8.10

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions