一、背景说明
OpenWrt 官方在 25.x 版本(及 ImmortalWrt 25.12+ 等衍生版)中,已将包管理器从
opkg 全面迁移至基于 Alpine Linux 的 apk 包管理系统。这意味着:-
旧系统(24.10 及更早):使用
opkg,安装.ipk包 -
新系统(25.x+):使用
apk,安装.apk包
参考:
目前社区已有大量用户开始尝鲜 25.x 内核的 iStoreOS / ImmortalWrt 固件,但现有插件生态仍以
.ipk 为主,导致新系统用户无法直接安装使用。同时,很多插件作者发布的安装包并非直接的 .ipk 或 .apk 文件,而是各种压缩包格式,安装过程繁琐。二、需求一:增加 .apk 格式支持,适配 OpenWrt 25.x+ / iStoreOS 新版
当前遇到的问题
在 VUM星球插件中心下载的「高级卸载」安装包(
luci-app-uninstall.run),经解压确认内部打包的是 .ipk 格式,依赖 opkg 进行安装。在基于 25.x 的 iStoreOS / OpenWrt 系统上执行安装时,会出现以下情况:
-
.run脚本内部调用opkg install,但系统实际包管理器为apk -
安装失败或提示包格式不兼容
-
用户不得不手动解压
.run文件,再尝试用apk add --allow-untrusted强制安装,体验极差且容易破坏依赖关系
期望的解决方案
希望「高级卸载」插件在发布下个版本时,能够同时提供两种格式的安装包:
| 系统版本 | 包管理器 | 建议的安装包命名 |
|---|---|---|
| OpenWrt 24.10 / iStoreOS 旧版 | opkg |
luci-app-uninstall-v1.2.4-ipk-x86_64.run |
| OpenWrt 25.x+ / iStoreOS 新版 | apk |
luci-app-uninstall-v1.2.4-apk-x86_64.run |
| ARM64 设备(如 E20C/R4S 等) | apk |
luci-app-uninstall-v1.2.4-apk-aarch64.run |
具体建议:
-
双格式
.run包:参考 sirpdboy/buildrun 等项目的做法,在构建时同时输出ipk和apk两种内核的.run自解压包,通过文件名区分。 -
安装脚本自适应:在
.run包内的install.sh中增加系统检测逻辑,自动判断当前系统使用opkg还是apk,调用对应的包管理器安装。 -
架构覆盖:继续保留对 X86_64 和 ARM64(aarch64_cortex-a53 / aarch64_generic)的支持。
三、需求二:增加自动解压压缩包安装功能
当前遇到的问题
很多插件作者发布的安装包并非直接的
.ipk 或 .apk 文件,而是以压缩包形式提供(如 GitHub Releases 中的 .zip、.tar.gz 等)。目前「高级卸载」插件没有便捷的安装方式,用户需要:-
先在其他设备上下载并解压,提取出里面的
.ipk文件,再上传到路由器用「高级卸载」安装;或 -
上传到路由器后,通过 SSH 命令行手动解压,但不同压缩格式的解压命令各不相同(
tar -zxvf、unzip、tar -jxvf等),对普通用户来说门槛很高,过程繁琐。
典型例子:
-
EasyTier/luci-app-easytier 的 Releases 提供的是
.zip格式 -
sbwml/luci-app-openlist2 的 Releases 提供的是
.tar.gz格式
期望的解决方案
希望「高级卸载」插件能够支持在线下载并自动解压常见压缩格式,从中提取
.ipk 或 .apk 文件后直接安装。建议支持的压缩格式:
.tar.gz .tgz .tar.bz2 .tar.xz .tar .zip .gz .bz2
实现逻辑建议:
-
用户在插件界面粘贴压缩包的下载链接(如 GitHub Releases 直链)
-
插件自动下载该压缩包到临时目录
-
根据文件后缀识别压缩格式,调用对应的解压命令自动解压
-
扫描解压后的目录,自动识别其中的
.ipk或.apk文件 -
根据当前系统类型(
opkg或apk)自动选择匹配的包进行安装 -
安装完成后清理临时文件,并提示用户安装结果
或者更简单的方案: 在「手动安装」功能中,增加一个”上传压缩包”的选项,用户直接上传
.zip / .tar.gz 等文件,插件自动解压并列出其中可安装的包,用户勾选后一键安装。四、技术可行性参考
社区已有成熟方案可供参考:
-
sirpdboy/buildrun 项目已实现对同一插件同时构建
ipk和apk两种格式的.run安装包,且通过文件名明确区分(如*-ipk-x86_64-*.run与*-apk-x86_64-*.run)。 -
apk包的手动安装命令为:apk add --allow-untrusted xxx.apk,与opkg install xxx.ipk用法类似,迁移成本不高。 -
压缩包解压功能在 OpenWrt 系统中已有
tar、unzip、gzip、bzip2等基础工具支持,无需额外安装大量依赖。
五、我的使用环境(供参考)
-
设备型号:Radxa E20C
-
系统版本:iStoreOS 25.12.5 2026080812(内核:6.12.94)
-
系统架构:aarch64_cortex-a53
-
当前包管理器:
apk(运行which apk或which opkg可确认) -
当前遇到的问题:
-
无法通过 iStore 手动安装或命令行直接安装现有的
.run包 -
从 GitHub 下载的
.zip/.tar.gz插件包需要手动解压,步骤繁琐
-
六、其他说明
-
「高级卸载」插件本身功能非常实用,能够彻底解决 iStoreOS 插件残留问题,避免频繁恢复出厂设置,是软路由用户的刚需工具。
-
如果短期内实现双格式构建有难度,也建议至少先提供一版
.apk格式的手动安装包,满足 25.x 系统用户的迫切需求。 -
自动解压功能如果能实现,将极大提升用户体验,让「高级卸载」成为真正意义上的”一站式”插件管理工具。
-
社区愿意协助测试,如有测试版可及时反馈安装与卸载体验。
感谢 VUM星球团队的开发工作,期待「高级卸载」插件能持续进化,继续为广大软路由用户提供便利!

超级版主


