[BUG] Native installer incompatible with Termux/Android (Bionic libc), but npm installation shows deprecation warning
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Summary
When installing Claude Code via npm on Termux/Android, the CLI displays a deprecation message pushing users toward the native installer:
Claude Code has switched from npm to native installer. Run claude install or see https://docs.anthropic.com/en/docs/claude-code/getting-started for more options.
However, the native installer binary is fundamentally incompatible with Termux because it's built against glibc, while Android/Termux uses Bionic libc.
Technical Evidence
The native binary is an ELF executable linked against glibc:
$ file claude-2.1.19-linux-arm64
claude-2.1.19-linux-arm64: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=d63ecaded0faac9b1e109be15c88f28bd0e0cca5, not stripped
Dependency analysis shows missing glibc libraries:
$ libtree claude-2.1.19-linux-arm64
claude-2.1.19-linux-arm64
└── libpthread.so.0 not found
┊ Paths considered in this order:
┊ 1. rpath:
┊ 2. LD_LIBRARY_PATH was not set
┊ 3. runpath was not set
┊ 4. ld config files:
┊ 5. Standard paths:
┊ /data/data/com.termux/files/usr/lib
┊ /system/lib
┊ /system/lib64
┊ /usr/lib
┊ /usr/lib64
┊ /lib
┊ /lib64
Error [claude-2.1.19-linux-arm64]: Not all dependencies were found
The binary expects:
- Dynamic linker:
/lib/ld-linux-aarch64.so.1(glibc) — Termux uses Android'slinker64(Bionic) - libpthread.so.0 — In Bionic, threading is built into
libc.so; there's no separate libpthread
This is not a missing library issue — it's a fundamental ABI incompatibility.
Related Issue
This was previously reported in #10644 which requested Termux support for the native client. That issue was closed, but the problem persists and has now become more urgent since npm installation is being deprecated.
Impact
Termux users are now in a situation where:
- The supported installation method (native) doesn't work and can never work without a Bionic-compatible build
- The working installation method (npm) shows a deprecation warning suggesting users switch to something impossible
What Should Happen?
Suggested Solutions
Any of the following would resolve this:
- Detect Termux/Bionic and suppress the deprecation warning — recognize that npm is the only viable method on this platform
- Provide a Bionic-compatible native binary for
android-arm64 - Auto-detect incompatible environments and fall back to npm gracefully instead of showing the warning
- Document Termux as an officially supported platform with npm as the recommended installation method
Error Messages/Logs
## Environment
- **Platform**: Android 16 (Termux)
- **Device**: 2410CRP4CG
- **Architecture**: aarch64
- **Claude Code version**: 2.1.19 (npm-global)
- **Node version**: v24.13.0
- **npm version**: 11.6.2
- **Installation method**: npm (native installer fails)
### System Diagnostics
$ uname -a
Linux localhost 6.1.118-android14-11-gca0ef6d17716-ab13624819 #1 SMP PREEMPT Tue Jun 10 18:59:08 UTC 2025 aarch64 Android
$ getprop ro.product.model
2410CRP4CG
$ getprop ro.build.version.release
16
$ echo $PREFIX
/data/data/com.termux/files/usr
$ echo $TMPDIR
/data/data/com.termux/files/usr/tmp
$ which claude
/data/data/com.termux/files/usr/bin/claude
$ which node
/data/data/com.termux/files/usr/bin/node
$ node --version
v24.13.0
$ npm --version
11.6.2
$ npm list -g @anthropic-ai/claude-code
/data/data/com.termux/files/usr/lib
└── @anthropic-ai/claude-code@2.1.19
$ claude --version
2.1.19 (Claude Code)
$ claude doctor
Diagnostics
└ Currently running: npm-global (2.1.19)
└ Path: /data/data/com.termux/files/usr/bin/node
└ Invoked: /data/data/com.termux/files/usr/bin/claude
└ Config install method: native
└ Search: OK (rg)
Updates
└ Auto-updates: disabled (CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC set)
└ Update permissions: Yes
└ Auto-update channel: latest
└ Stable version: 2.1.7
└ Latest version: 2.1.19
Note the mismatch in `claude doctor` output: **Currently running: npm-global** but **Config install method: native** - this reflects the issue where the config expects native but npm is the only working option.
Steps to Reproduce
just run claude
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.19
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Other
Additional Information
_No response_
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗