Termux 一报红字,最容易出现两种极端反应:一种是把所有问题都叫“网络不好”,另一种是立刻卸载重装。
前者可能让你换十个节点也没用,后者则可能成功解决报错——顺便把好不容易配好的环境也解决掉了。
先看最后几行,不要只看满屏红色
包管理器经常先输出一长串过程信息,真正有用的原因通常在最后几行。先把错误归类:
404、Release file、连接超时:更像仓库地址、镜像同步或网络问题。NO_PUBKEY、签名无效、时间不正确:更像签名验证或设备时间问题。unmet dependencies、held broken packages:更像依赖关系或一次中断的升级。dpkg was interrupted:上一次安装没有收尾。permission denied:可能是目录权限或 Android 存储访问,不一定与软件仓库有关。- APK 安装时报签名不匹配:通常是 Termux 主程序或插件来自不同签名来源。
错误类型没分清就开始换镜像,和汽车亮故障灯后先换雨刷差不多,不能说完全没动作,但关系确实不大。
pkg update 和 pkg upgrade不是一回事
pkg update
pkg upgradepkg update刷新“仓库里有哪些版本”的索引;pkg upgrade才会升级已经安装的包。索引很久没更新时直接安装新包,依赖版本可能对不上。
建议分开执行,这样出错时知道卡在哪一步。不要为了看起来干净,把几十行输出一口气清掉;第一条明确错误往往比最后一句“失败”更有用。
遇到 404 或仓库连不上
先确认普通网络可用,再运行 termux-change-repo选择另一个官方镜像,然后重新执行 pkg update。镜像偶尔不同步很正常,换一次可以验证;连续换十次只会让你忘记原来用的是哪个。
如果报错里仍指向已经停用的旧地址,重点检查 Termux 版本和安装来源,而不是继续叠代理、改 DNS、改 hosts。
签名错误时,千万别先关闭校验
软件包签名用来确认下载内容确实来自受信任仓库。出现签名错误时先检查:
- 手机日期、时间和时区是否正确。
pkg update是否完整成功。- 仓库是否正在同步,稍后重试或换官方镜像。
- Termux 是否来自仍受支持且一致的分发来源。
网上有些教程会让你删除密钥或关闭签名验证,效果相当于“门锁报警太烦,所以把锁拆了”。它可能让命令继续跑,但安全问题并没有被修好。
安装中断与依赖损坏怎么处理
如果错误明确写着 dpkg was interrupted,可以先让未完成的配置收尾:
dpkg --configure -a
apt --fix-broken install这两条不是日常保健品。只有错误信息指向中断或损坏依赖时再用。之后重新执行 pkg update 和对应的安装命令。
如果某个包来自第三方仓库,先确认该仓库支持当前架构和 Termux 环境。Ubuntu、Debian 的普通软件包不能因为同样是 .deb 就直接当 Termux 包使用;文件后缀一样,不代表里面的路径、链接库和构建环境一样。
主程序和插件不要混装来源
Termux、Termux:API、Widget、Tasker 等相关 APK 必须保持签名兼容。从一个来源安装主程序、从另一个来源装插件,Android 可能直接拒绝安装或更新。
如果确实要切换分发来源,先备份数据,再卸载所有使用旧签名的 Termux 相关应用,然后从同一来源重新安装。单独覆盖其中一个通常行不通。
“没有存储权限”不是包管理器坏了
termux-setup-storage用于申请共享存储访问,并在主目录创建相应入口。它解决的是 Android 存储访问,不会修复仓库 404、签名或依赖问题。
反过来也一样:pkg update再成功,也不会自动获得相册、下载目录的权限。把两条线分开,排错速度会快很多。
重装前至少留住这些东西
pkg list-installed > packages.txt
tar -czf termux-home-backup.tar.gz -C $HOME .第二条会把主目录内容打包,实际保存位置和剩余空间要自己确认;不要把备份只留在即将被卸载的应用私有目录里。密钥、配置文件和脚本尤其要单独检查。
只有应用文件明显损坏、版本来源已经无法正常升级,或你明确想重建环境时,重装才值得排到前面。
一个不容易把环境越修越坏的顺序
读最后几行 → 判断错误类型 → 更新索引 → 针对性修复 → 备份 → 最后才考虑重装。
如果只是网络或镜像问题,改一件事就重新测试。一次同时换镜像、DNS、代理和软件来源,最后即使好了,也不知道到底是谁修好的。
进一步核对:Termux 官方项目与安装说明