在 Termux 里一键搭建可离线使用的本地开发环境: Ubuntu (proot-distro) + XFCE 桌面 (Termux:X11) + VSCode + Python / Node / C++。
第一次安装需要联网;装完后整套环境完全离线可用。
- Android 设备(aarch64 或 x86_64)
- 已装 Termux(从 F-Droid 或 GitHub release,不要 Google Play)
- 已装 Termux:X11(同样从 F-Droid 或 GitHub release,选
app-arm64-v8a-debug.apk) $HOME至少 6 GB 空闲
这两个 APK 必须先手动装好,脚本帮不了。
整个流程按顺序执行下面三段命令即可。每段跑完会自动 echo 下一段。
bash <(curl -fsSL https://raw.githubusercontent.com/Xynrin/termux-setup-program/main/scripts/termux-init.sh)完成后会写入本地命令 ubuntu(进容器)。继续:
source ~/.bashrc # 让 ubuntu 命令生效(首次需要)
ubuntu # 进入 Ubuntu 容器,提示符变成 root@…bash <(curl -fsSL https://raw.githubusercontent.com/Xynrin/termux-setup-program/main/scripts/container-init.sh)这一步最久(5-15 分钟,看网速)。完成后:
exit # 退出容器,回到 Termuxbash <(curl -fsSL https://raw.githubusercontent.com/Xynrin/termux-setup-program/main/scripts/desktop-setup.sh)完成后会写入本地命令 startde / stopde。
startde # 启动桌面:起 X11 + pulseaudio + 进容器跑 XFCE
# 切到 Termux:X11 APP 即可看到桌面
# 桌面终端里 code . 启动 VSCode
stopde # 关掉桌面相关进程
ubuntu # 进容器命令行(不起桌面)Step 2(container-init.sh)支持下列 env 控制:
| 变量 | 默认 | 含义 |
|---|---|---|
MIRROR |
aliyun |
apt 镜像(在所有安装完成后才切换):tuna / ustc / aliyun / none(保留官方源) |
SKIP_VSCODE |
0 |
设 1 跳过 VSCode |
SKIP_NODE |
0 |
设 1 跳过 Node.js |
SKIP_PYTHON |
0 |
设 1 跳过 Python |
SKIP_CPP |
0 |
设 1 跳过 C/C++ |
用法:
# 比如不要 VSCode + 用 USTC 源
SKIP_VSCODE=1 MIRROR=ustc bash <(curl -fsSL .../container-init.sh)镜像切换发生在所有安装完成的最后一步——前面的 apt 下载始终走 prot-distro 自带的官方源(最稳)。如果切换失败,脚本会自动回滚到官方源,不会让你陷入"装不上、改不回"的死局。
Termux 侧
- proot-distro / pulseaudio / termux-x11-nightly / git / curl / wget
Ubuntu 容器内
- 基础:sudo / locales / dbus-x11 / 中文 locale (
zh_CN.UTF-8) - 桌面:XFCE4 + xfce4-terminal(关掉 compositor,省资源)
- 字体:Noto CJK + 文泉驿
- 输入法:fcitx5 + 拼音
- 工具:git / tmux / htop / ripgrep / fd / jq / neovim / openssh-client / rsync 等
- Python:python3 / pipx / uv
- Node:nvm(gitee 镜像)+ LTS + pnpm + yarn(npmmirror 注册表)
- C/C++:build-essential / clang / cmake / gdb / lldb / ninja / valgrind
- VSCode:官方 .deb + 自动
--no-sandbox补丁(兼容 prot)
Q: ubuntu / startde 命令找不到?
执行 source ~/.bashrc,或重开 Termux。
Q: 某一步装到一半失败?
重跑那一段就行(每段都用 ~/.termux-setup/ 或 /root/.termux-setup/ 标记进度,已完成的会跳过)。
Q: VSCode 启动报 sandbox 错?
脚本已加 --no-sandbox。仍报错试:
ubuntu
code --no-sandbox --disable-gpu-sandbox --user-data-dir=$HOME/.vscode-data .Q: 桌面黑屏?
- 确认 Termux:X11 APP 在前台
stopde && startde重来一次- 看 X11 socket:
ls /tmp/.X11-unix
Q: 中文显示成方块?
进容器跑 fc-cache -fv 然后重启桌面。
Q: 输入法不出框?
桌面终端里手动起一下:fcitx5 -d。
Q: 想从头来?
proot-distro remove ubuntu
rm -rf ~/.termux-setup
# 重跑 Step 1Q: 想换 apt 源?
重跑 Step 2,前面加 MIRROR=ustc(或 aliyun / none)。
- Docker(prot 套娃问题多)
- JetBrains 系 IDE(吃内存)
- GPU 硬件加速(保持软件渲染:
GALLIUM_DRIVER=llvmpipe) - Termux 终端本身的中文输入法(只在容器桌面里用 fcitx5)
三段脚本完全独立,可单独 curl | bash 执行。每段在顶部内联了简单的 log/run_step 工具,不依赖任何外部库。所有进度标记写在 ~/.termux-setup/(Termux 侧)和 /root/.termux-setup/(容器侧),重跑安全。