这是 Alpine / OpenWrt(apk 包管理器)里一个非常典型且“正常”的报错,并不表示 APK 文件损坏,而是签名校验不通过。
先给结论,再给可执行解决办法。
一、错误含义(准确解释)
ERROR: /tmp/upload.apk: UNTRUSTED signature
apk install 命令失败了 ,代码为 99
含义是:
apk 包的签名不在系统信任的公钥列表中
也就是说:
apk 包是 第三方或手动编译
系统的
/etc/apk/keys/里 没有对应的公钥apk 出于安全原因拒绝安装
⚠️ 这和文件是否完整、是否可用无关
二、最直接、最常用的解决办法(推荐)
✅ 方法一:跳过签名校验(最省事)

apk add --allow-untrusted /tmp/upload.apk
这是 官方支持参数,用途就是:
手动安装
本地 apk
非仓库包
📌 适用场景:
HomeProxy / sing-box / 第三方插件
自编译包
GitHub 下载的 apk
99% 的人用这个即可
三、如果你不想每次都 --allow-untrusted
方法二:导入签名公钥(长期方案)
如果你知道 apk 的签名者(例如某插件作者):
1️⃣ 把 .rsa.pub 公钥文件拷贝到:
/etc/apk/keys/
例如:
cp author.rsa.pub /etc/apk/keys/
2️⃣ 再安装:
apk add /tmp/upload.apk
📌 但现实中:
大多数第三方 apk 不会单独给你公钥
所以这个方法用得不多
四、为什么 OpenWrt 用户容易遇到这个问题
你很可能是:
ImmortalWrt / Alpine rootfs
用 apk 而不是 opkg
手动上传 ipk/apk
而:
官方仓库包 → 有签名 → 不报错
手动包 → 无信任 → 必报
UNTRUSTED
这是 安全设计,不是系统故障。
五、确认你的 apk 是否“真的没问题”(可选)
你可以做一个基础检查:
apk info -f /tmp/upload.apk
或查看架构是否匹配:
uname -m
常见不匹配情况:
系统是
aarch64包是
x86_64
⚠️ 架构不匹配会是 另一个错误,不是 UNTRUSTED
六、结论(你现在该怎么做)
直接执行:
apk add --allow-untrusted /tmp/upload.apk
即可。