openwrt 24.10

OpenWrt 24.10自 2024 年 11 月起:包管理器从 opkg 更改为 apk

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 提供了以下显著优势:

  1. 包管理效率更高apk 支持更强大的依赖管理和更高效的包操作。
  2. 签名验证:所有软件包都需要有效签名,提升了安全性。
  3. 更丰富的功能集apk 提供了更多命令和选项,支持复杂的包管理操作。

常见命令对比

以下是 apkopkg 的常用命令对比:

基本操作

命令opkgapk描述
更新包索引opkg updateapk update刷新包源
安装包opkg install pkgapk add pkg安装指定包
卸载包opkg remove pkgapk del pkg卸载指定包

包列表和信息

命令opkgapk描述
显示所有可用包opkg listapk list列出所有包
显示已安装包opkg list-installedapk list --installed列出已安装包
显示可升级包opkg list-upgradableapk list --upgradeable列出可升级包
显示包提供者opkg -A whatprovides Papk list --providers [P]显示提供某功能的包
显示包的文件内容opkg files Papk 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 的老用户需特别留意命令语法的差异,以免影响实际操作。