如何在手机终端上使用claude-code?
在Termux中使用proot-distro运行ubuntu
直接在termux中安装claude code会遇到下面错误:
bun -version
error: "/data/data/com.termux/files/home/.bun/bin/bun" has unexpected e_type: 2
这个错误是因为bun是为标准Linux环境(依赖glibc库)编译的,和Termux的Android环境(bionic libc)不兼容。
由于Bun官方的Android实验性支持可能尚未彻底落地,最简单可靠的方式是通过Termux运行一个完整的Linux虚拟环境。就像在安卓手机上“模拟”一台Linux电脑,在里面所有软件的兼容性都由Linux系统自己解决。
🛠️ 详细操作步骤
-
安装proot-distro并下载Ubuntu:在Termux中,依次运行以下两条命令:
1pkg install proot-distro 2proot-distro install ubuntu -
登录Ubuntu环境并更新:安装完成后,用下面命令登录Ubuntu系统,并更新软件源:
1proot-distro login ubuntu 2apt update && apt upgrade -y -
在Ubuntu中安装Bun:现在你的Termux就连接到了Ubuntu系统里。使用官方推荐的一键安装脚本安装Bun,网络问题多试几次即可:
1curl -fsSL https://bun.sh/install | bash安装完成后,执行
source /root/.bashrc使Bun命令生效,最后用bun --version检验,看到版本号就说明成功了。
💡 未来更简单的方案
Bun官方已宣布将实验性支持Android。届时你的操作流程会大大简化,只需在Termux中执行 pkg install bun 就能一步到位,再也无需折腾Proot虚拟环境了。
将ubuntu的安装源设置成中科大
要为 Termux 里的 Ubuntu 设置中科大源,核心是编辑 /etc/apt/sources.list,将其修改为中科大为 ARM 架构(ubuntu-ports 源)提供的地址,不能直接使用常规的 ubuntu 源。具体步骤如下:
-
进入 Ubuntu 环境:在 Termux 中执行
proot-distro login ubuntu。 -
备份原有配置:
1cp /etc/apt/sources.list /etc/apt/sources.list.bak -
获取版本代号:执行
lsb_release -a查看Codename。例如 24.04 是noble,22.04 是jammy。 -
一键更换为中科大源:确认好你的版本代号后,运行以下命令(记得将
jammy替换成你自己刚才查到的版本代号):1sudo sed -i '[email protected]@mirrors.ustc.edu.cn/ubuntu-ports@g' /etc/apt/sources.list -
更新软件源:
1apt update && apt upgrade -y
💡 两种验证方法
- 检查源文件:主要查看是否已将
/etc/apt/sources.list文件里的官方源ports.ubuntu.com成功替换为mirrors.ustc.edu.cn。 - 检查下载速度:观察
apt update的输出,如果速度快且没有错误,则配置成功。
📝 手动配置参考(备用)
如果一键命令失效,可以用 nano 手动修改。把 jammy 替换成你的系统代号,并确保地址是 ubuntu-ports。
1deb http://mirrors.ustc.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse
2deb http://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse
3deb http://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse
4deb http://mirrors.ustc.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse
⚠️ 常见问题
sudo: command not found:默认是root用户无需sudo”。如果添加了普通用户,可执行apt update` 安装 sudo。ports.ubuntu.com连接失败:网络问题。可再次运行一键命令或直接使用上面“手动配置参考”中给出的中科大源地址。lsb_release: command not found:未安装lsb-release。运行apt update && apt install lsb-release -y即可。
基于bun安装claude code
这主要有两种方式:
-
方式一:全局安装官方包(最简单):如果只想把 Claude Code 作为命令行工具使用,官方已经支持直接使用 Bun 进行全局安装。在终端执行
bun install -g @anthropic-ai/claude-code即可,安装完成后用claude --version验证是否成功。 -
方式二:从源码运行(最前沿):如果你想体验最新功能甚至研究源码,可以克隆社区重构版仓库。依次执行
git clone https://github.com/pengchengneo/Claude-Code.git、cd Claude-Code、bun install、bun run dev即可【12†L11】。需提前安装好 Git。
📝 详细操作步骤
无论采用哪种方式,都可以参考这份详细的步骤:
-
安装 Bun 运行时 Claude Code 正是基于 Bun 运行时构建的,在安装 Claude Code 之前,请先通过官方脚本安装 Bun:
1curl -fsSL https://bun.sh/install | bash安装完毕后,重启终端或执行
source ~/.bashrc,然后运行bun --version确认版本需不小于1.3.5。 -
执行安装
- 全局安装:执行
bun install -g @anthropic-ai/claude-code。 - 源码运行:依次执行以下命令【12†L11】:
1git clone https://github.com/pengchengneo/Claude-Code.git 2cd Claude-Code 3bun install 4bun run dev
- 全局安装:执行
-
配置 API 密钥并启动 在项目目录中创建
.env文件,写入你的 API 密钥(例如ANTHROPIC_API_KEY=你的密钥)。最后在终端输入claude命令即可启动。
全局安装完后,记得把 API 密钥配置好。
proot-distro login ubuntu后如何查看termux下的文件?
直接访问/sdcard目录即可,可以使用 ln -sf /sdcard/xxx yyy 命令建立软连然后进行访问。
在 Ubuntu (PRoot) 容器内,默认是看不到 Termux 宿主环境中的文件的,因为容器有自己独立的根文件系统。不过,你可以通过绑定挂载(bind mount)的方式,将 Termux 的目录映射到容器中。
下面介绍两种简单的方法,无需退出容器也能临时访问,但最稳定的是重新登录并添加挂载参数。
🔄 方法一:重新登录时挂载(推荐)
-
退出当前 Ubuntu 容器:在 Ubuntu 终端输入
exit或按Ctrl+D。 -
在 Termux 中,使用
--bind参数重新登录:1proot-distro login ubuntu --bind /data/data/com.termux/files/home:/termux-home- 这会将 Termux 的 主目录(即
~/,包含storage等)映射到 Ubuntu 容器内的/termux-home目录。
- 这会将 Termux 的 主目录(即
-
在 Ubuntu 中访问:进入容器后,直接查看
/termux-home:1ls /termux-home 2# 例如查看手机内部存储(Download 等) 3ls /termux-home/storage/shared/Download
💡 如果需要同时挂载多个目录(如整个 Termux 的根目录),可以重复
--bind参数:1proot-distro login ubuntu \ 2 --bind /data/data/com.termux/files/home:/termux-home \ 3 --bind /data/data/com.termux/files/usr:/termux-usr
🧩 方法二:在已有的容器内手动挂载(稍复杂)
如果你已经登录 Ubuntu,并且不想退出,可以借助 proot 的运行时绑定功能,但需要额外工具。步骤如下:
- 在 Ubuntu 中安装
bindfs(可选):1apt update && apt install bindfs -y - 创建挂载点并绑定:
1mkdir -p /mnt/termux-home 2# 使用 bindfs 将 Termux 主目录映射进来(需要知道 Termux 的实际路径) 3bindfs /data/data/com.termux/files/home /mnt/termux-home⚠️ 注意:
/data/data/com.termux/files/home这个路径在 Ubuntu 容器内默认是不存在的,除非你之前已经绑定了上一级目录。这种方法通常行不通,因为容器内看不到宿主机的/data。因此不推荐此方法,还是方法一更可靠。
📂 常用挂载场景
| 你想要访问的手机目录 | Termux 中的路径 | 建议挂载到 Ubuntu 容器中的路径 |
|---|---|---|
Termux 主目录(含 storage) |
/data/data/com.termux/files/home |
/termux-home |
| 手机内部存储根目录 | /data/data/com.termux/files/home/storage/shared |
/sdcard |
| 下载文件夹 | /data/data/com.termux/files/home/storage/shared/Download |
/termux-downloads |
示例命令(一次挂载多个常用位置):
1proot-distro login ubuntu \
2 --bind /data/data/com.termux/files/home:/termux-home \
3 --bind /data/data/com.termux/files/home/storage/shared/Download:/downloads
登录后,你就可以在 Ubuntu 中直接 cd /termux-home 或 cd /downloads 操作文件了。
🔐 权限提示
- 挂载后,Ubuntu 内的用户(默认为 root)拥有对被挂载目录的完整读写权限。
- 如果你在 Ubuntu 内创建了普通用户(例如
adduser myuser),可能需要确保该用户有权访问/termux-home,可以使用chmod 755 /termux-home。
❓ 不想每次都输入长命令?
可以创建一个 Termux 的别名(编辑 ~/.bashrc):
1alias ubuntu='proot-distro login ubuntu --bind /data/data/com.termux/files/home:/termux-home'
然后执行 source ~/.bashrc,之后只需输入 ubuntu 即可自动挂载主目录登录。
现在你可以在 Ubuntu 容器中自由访问 Termux 的文件了,比如直接编辑手机 Download 文件夹里的代码,或者将 Ubuntu 内生成的文件复制到手机存储中。
