指南 / Android

Termux 装包报错,别急着重装

先按错误类型分流:镜像、签名、依赖、安装来源和存储权限不是一回事,重装通常不是第一解。

发布 · 更新 · 9 MIN

Termux 一报红字,最容易出现两种极端反应:一种是把所有问题都叫“网络不好”,另一种是立刻卸载重装。

前者可能让你换十个节点也没用,后者则可能成功解决报错——顺便把好不容易配好的环境也解决掉了。

先看最后几行,不要只看满屏红色

包管理器经常先输出一长串过程信息,真正有用的原因通常在最后几行。先把错误归类:

错误类型没分清就开始换镜像,和汽车亮故障灯后先换雨刷差不多,不能说完全没动作,但关系确实不大。

pkg update 和 pkg upgrade不是一回事

pkg update
pkg upgrade

pkg update刷新“仓库里有哪些版本”的索引;pkg upgrade才会升级已经安装的包。索引很久没更新时直接安装新包,依赖版本可能对不上。

建议分开执行,这样出错时知道卡在哪一步。不要为了看起来干净,把几十行输出一口气清掉;第一条明确错误往往比最后一句“失败”更有用。

遇到 404 或仓库连不上

先确认普通网络可用,再运行 termux-change-repo选择另一个官方镜像,然后重新执行 pkg update。镜像偶尔不同步很正常,换一次可以验证;连续换十次只会让你忘记原来用的是哪个。

如果报错里仍指向已经停用的旧地址,重点检查 Termux 版本和安装来源,而不是继续叠代理、改 DNS、改 hosts。

镜像问题的典型证据是明确的仓库 URL、404、超时或 Release 文件错误。没有这些证据,别把所有安装失败都甩给镜像。

签名错误时,千万别先关闭校验

软件包签名用来确认下载内容确实来自受信任仓库。出现签名错误时先检查:

  1. 手机日期、时间和时区是否正确。
  2. pkg update是否完整成功。
  3. 仓库是否正在同步,稍后重试或换官方镜像。
  4. 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 官方项目与安装说明