引言
OpenWrt 社区正在经历一次重要的技术转型:从传统的 opkg 包管理器迁移到 Alpine Linux 使用的 apk (Alpine Package Keeper)。这一变化带来了更强大的功能和更好的依赖处理,但也意味着习惯了 opkg 的用户需要学习新的命令和使用方式。
⚠️ 重要警告
在开始之前,请务必注意:
禁止直接使用 apk upgrade!
当前 OpenWrt 的软件包仓库中,多个软件包存在缺失的冲突声明、不完整的依赖关系或配置错误(例如 hostapd-, wpad-, ucode-mod-* 等)。直接升级可能导致系统不可用甚至变砖。
✅ 正确的升级方式:
使用 ASU(Attended SysUpgrade)客户端:
LuCI 界面中的 Attended Sysupgrade
命令行工具 owut
或者 Firmware Selector 在线工具
基础命令对比
获取帮助
包安装与卸载
注意签名验证: apk 严格要求所有软件包必须有有效签名。安装本地构建的软件包时:
bash
# 会报错 UNTRUSTED signature
apk add ./mypackage.ipk
# 需要使用 --allow-untrusted
apk add --allow-untrusted ./mypackage.ipk实用技巧
1. 自动更新缓存后安装
传统 opkg 方式:
bash
opkg update && opkg install dnsmasq-full新 apk 方式(一步到位):
bash
apk --update-cache add dnsmasq-full2. 模拟运行
预览命令执行结果而不实际修改系统:
bash
apk del --simulate nmap3. 离线环境使用
如果只想安装本地 .apk 文件而不联网更新索引:
bash
# 临时禁用
apk add --repositories-file /dev/null ./local-package.apk
# 永久禁用(需要备份后删除目录)
mv /etc/apk/repositories.d /etc/apk/repositories.d-disabled包查询与信息
基本查询命令
变体命令:
apk list --installed --manifest- 生成"包名 版本号"格式的列表,便于脚本处理apk info- 仅列出已安装包名,无需额外解析apk list --orphaned- 显示可能被遗弃的依赖包
实际示例:查找 DNS 服务器软件
使用 opkg:
bash
$ opkg -A whatprovides dnsmasq
What provides dnsmasq
dnsmasq-dhcpv6
dnsmasq
dnsmasq-full使用 apk:
bash
$ apk list --providers dnsmasq
<dnsmasq> dnsmasq-2.90-r3 x86_64 {feeds/base/package/network/services/dnsmasq} (GPL-2.0)
<dnsmasq> dnsmasq-dhcpv6-2.90-r3 x86_64 {feeds/base/package/network/services/dnsmasq} (GPL-2.0)
<dnsmasq> dnsmasq-full-2.90-r3 x86_64 {feeds/base/package/network/services/dnsmasq} (GPL-2.0) [installed]查看已安装的提供者:
软件包详细信息
高级操作
迁移注意事项总结
永远不要直接
apk upgrade- 使用 ASU 工具进行系统升级签名验证 - apk 默认要求有效签名,安装自制包需加
--allow-untrusted网络访问 - apk 默认会尝试更新所有配置的源,离线环境需要特殊处理
依赖关系 - apk 的依赖处理更严格,可能暴露之前 opkg 未发现的问题
软件源配置 - 配置文件位置从
/etc/opkg/*.conf变为/etc/apk/repositories.d/
结语
从 opkg 到 apk 的迁移不仅改变了命令的使用方式,也带来了更现代的包管理理念。虽然初期可能需要一些适应时间,但 apk 提供的更好依赖处理、更快的查询速度和更严格的安全验证,将使 OpenWrt 系统更加稳定可靠。
建议在正式迁移前,先在测试设备上熟悉这些新命令,并使用 --simulate 参数预览操作结果。当需要升级系统时,务必使用 ASU 相关工具,确保升级过程安全可控。
参考资源:
本文基于 OpenWrt 23.05 及后续版本的 apk 实现编写,如有更新请参考官方文档。
OpenWrt 迁移指南:从 opkg 到 apk 完全对照速查表
https://niujinkai.com/archives/1772632711169.html
评论