OpenWrt 24.10自 2024 年 11 月起:包管理器从 opkg
更改为 apk
介绍
自 2024 年 11 月起,OpenWrt 的主要开发分支和未来稳定版本(可能包括即将推出的openwrt 24.10 系列)构建的快照中,包管理器已从传统的 opkg
更换为 Alpine Linux 的 apk
(Alpine Package Keeper)。这是 OpenWrt 平台发展的重要里程碑,标志着软件包管理方式的根本转变。
需要注意的是,这一变更不影响 23.05 版本。此外,截至 2024 年 11 月 15 日,24.10 分支的稳定构建仍在使用 opkg
,但未来将全面过渡至 apk
。
为什么选择 apk
?
与旧版 opkg
相比,apk
提供了以下显著优势:
- 包管理效率更高:
apk
支持更强大的依赖管理和更高效的包操作。 - 签名验证:所有软件包都需要有效签名,提升了安全性。
- 更丰富的功能集:
apk
提供了更多命令和选项,支持复杂的包管理操作。
常见命令对比
以下是 apk
和 opkg
的常用命令对比:
基本操作
命令 | opkg | apk | 描述 |
---|---|---|---|
更新包索引 | opkg update | apk update | 刷新包源 |
安装包 | opkg install pkg | apk add pkg | 安装指定包 |
卸载包 | opkg remove pkg | apk del pkg | 卸载指定包 |
包列表和信息
命令 | opkg | apk | 描述 |
---|---|---|---|
显示所有可用包 | opkg list | apk list | 列出所有包 |
显示已安装包 | opkg list-installed | apk list --installed | 列出已安装包 |
显示可升级包 | opkg list-upgradable | apk list --upgradeable | 列出可升级包 |
显示包提供者 | opkg -A whatprovides P | apk list --providers [P] | 显示提供某功能的包 |
显示包的文件内容 | opkg files P | apk info --contents P | 列出包包含的文件 |
详细对比:签名验证
apk
强制要求所有软件包必须具有有效签名,这是与 opkg
的显著区别:
# 在 apk 中尝试安装未签名包
$ apk add ./owut_2024.07.01~189b2721-r1.apk
ERROR: ./owut_2024.07.01~189b2721-r1.apk: UNTRUSTED signature
# 使用 --allow-untrusted 选项安装
$ apk add --allow-untrusted ./owut_2024.07.01~189b2721-r1.apk
OK: 2313 MiB in 569 packages
而在 opkg
中,本地包的签名通常会被忽略,无需额外处理。
列表命令示例
apk
的列出命令支持更丰富的选项,例如孤立依赖(orphaned packages)的列出:
# 显示所有孤立的依赖包
$ apk list --installed --orphaned
而在 opkg
中,类似的功能需要依赖其他工具实现。
使用体验:Alpine 的“原生感”
为了更深入地了解 apk
,笔者在一台笔记本电脑上安装了 Alpine Linux,并使用了 apk
进行包管理。与 opkg
相比,apk
的语法更加直观,操作体验流畅。以下是一些常用命令的对比示例:
# 旧版 opkg
$ opkg update && opkg install dnsmasq-full
# 新版 apk
$ apk --update-cache add dnsmasq-full
总结
apk
的引入为 OpenWrt 带来了更强大的包管理能力和更高的安全性。虽然这一转变需要一定的学习成本,但长期来看,将显著提升 OpenWrt 的可维护性和用户体验。对于使用 24.10 系列及以后的用户,建议尽早熟悉 apk
的用法,顺利完成过渡。
注意:opkg
的老用户需特别留意命令语法的差异,以免影响实际操作。