linuxer
linuxer
发布于 2025-12-22 / 17 阅读
0
0

apk的openwrt 安装第三方报错 ERROR: /tmp/upload.apk: UNTRUSTED signature apk install 命令失败了 ,代码为 99

这是 Alpine / OpenWrt(apk 包管理器)里一个非常典型且“正常”的报错,并不表示 APK 文件损坏,而是签名校验不通过

先给结论,再给可执行解决办法。


一、错误含义(准确解释)

ERROR: /tmp/upload.apk: UNTRUSTED signature
apk install 命令失败了 ,代码为 99

含义是:

apk 包的签名不在系统信任的公钥列表中

也就是说:

  • apk 包是 第三方或手动编译

  • 系统的 /etc/apk/keys/没有对应的公钥

  • apk 出于安全原因拒绝安装

⚠️ 这和文件是否完整、是否可用无关


二、最直接、最常用的解决办法(推荐)

✅ 方法一:跳过签名校验(最省事)

apk.png

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

即可。



评论