o... oma 1.13... 来了!

本次发布的 1.13 更新包含近 20 个新特性。其中,我们针对审阅界面及内容阅读器进行了界面优化和强化,并对测试源选择界面 (oma topics) 进行了清理。

针对安同 OS,我们引入了更新元数据 (Topic Update Manifest) 规范的支持,可对关键系统更新进行概括化、更为人性化的展示;针对 Debian 系发行版,我们引入了对 multiarch 及 Ubuntu Pro 等专属特性的支持,并针对其依赖树复杂度导致的性能问题进行了针对性优化。

如上所述,oma 1.13 是我们对易用性和性能持续关注和改善的成果——让我们一起了解本次 oma 特性更新带来的各种新功能和修复吧!

测试指南

安同 OS 可通过如下命令获取 oma 1.13.0-rc1 测试版更新:

oma topics --opt-in oma-1.13.0-rc.1

Debian、Ubuntu 及衍生版,Linux Mint、deepin 及 openKylin 用户可通过如下命令获取 oma(目前暂未区分测试源及稳定源,可直接获取 1.13.0-rc1 版更新):

curl -sSf https://repo.aosc.io/get-oma.sh | sudo sh

新特性一览

安同 Update!更新元数据支持

每次更新系统,到底更新了什么呢?看着长长的变更列表,想必您也时常会感到头大且不知所云。为了让用户朋友们更直观地了解到安同 OS 各更新中的关键点,我们设计了更新元数据 (Topic Update Manifest) 规范,对单个或一组系统组件更新的标题、波及范围和注意事项等进行标注,并支持多语言。

安同 Update!今天您更新了吗?

oma 方面,我们根据 Windows Update 的启发,根据这一元数据的记录,将更新归纳、概括,并以更为人性化的方式呈现给用户(如上图)。随着更新元数据的覆盖和完善,安同 OS 下 oma 的系统更新界面将更直观易用。

软件包修改新增逻辑排序

当我们使用 oma 操作软件包增减时,可能会波及大量软件包。有时,一次系统更新可能会导致某些软件包不再被需要,进而被 oma 标记为“不再需要的依赖”被清理掉。此时,用户朋友可能会感到迷惑:为什么我明明没有卸载软件包,只是更新个系统而已,会导致软件包被卸载了呢?

为此,我们重新设计了 oma 表格对软件包修改信息的排序:

oma 1.13 为软件包修改新增了逻辑排序

如图,输入 oma remove scour 时,oma 会首先显示用户指定的 scour 被卸载,而后是依赖已无法满足的 inkscape 被卸载,之后再显示 gdlgtkmm 等卸载指定软件包后新出现、将被清理的无用依赖。

版本号变化高亮

oma 1.13 新增版本变化高亮

pikaur 启发,oma 1.13 新增了软件包被升级/降级时的版本号差异高亮,版本变化一目了然。

Debian/Ubuntu 支持改进

oma 1.13 包含许多针对 Debian/Ubuntu 及其衍生版的兼容性及使用体验改进:

  • 新增 /etc/apt/auth.conf.d 的支持,Ubuntu 用户现可通过 oma 使用 Ubuntu Pro 软件源
  • 新增了 /var/lib/dpkg/arch 文件读取支持,oma 在 Debian/Ubuntu 上可以直接识别通过 dpkg --add-architecture 添加的 multiarch 架构了
  • 针对 Debian/Ubuntu 及衍生发行版,为 oma upgrade 添加 --no-remove 选项,指定该参数后,oma upgrade 行为与 apt upgrade 一致

其他新特性

软件源及网络传输支持

  • 新增简单 Release 源(现在更常用 InRelease 编目)的签名验证支持
  • 新增下载超时功能,避免无谓等待

界面更改

  • 修改测试源设置界面 oma topics,默认过滤未开始公开测试的测试源 (topics),使用 --all 参数即可全部列出
  • 为 oma 的内容阅读器添加了 ud 快捷键,对应往上/下滚动(感谢 @ziyao233 的特性请求)
  • 更改 oma TUI 界面行为,移除升级和自动清理选项,改为使用 Ctrl + u 快捷键升级系统、Ctrl + a 快捷键清理不再需要的软件包
  • 新增“在解析依赖关系…”状态提示,在依赖关系解析耗时较长时给用户予提醒

功能及选项更改

  • 新增已安装软件包列表 /var/lib/oma/installed 记录支持,以便进行备份恢复
  • 更改 --fix-broken 行为,新增 --no-fix-dpkg-status 参数,将修复 dpkg 状态的行为控制拆分出来

其他非功能性修改

  • 新增针对 Debian/Ubuntu 及衍生版 arm64loong64 架构的 oma 安装包
  • 新增 Linux Mint 及 Debian Testing/Sid 安装支持(感谢白铭骢的贡献!)
  • 新增 oma-consoleoma-contents 文档(感谢 @wxwind白铭骢的贡献!)
  • 翻修源码仓库自述文件 (README)(感谢 @wxwind白铭骢的贡献!)

问题修复

  • 修复了同时打开 deb-srcdeb 源时,刷新界面 (oma refresh) 总进度条到 100% 会锁死的问题
  • 修复了非终端下仍显示动态进度条的问题
  • 修复了指定 --dry-run 参数后仍然需要 root 权限的问题(感谢 @nobootleg 的问题报告)
  • 修复了 oma pick 中版本号超出终端宽度时界面崩坏的问题
  • 修复了指定 --debug 后将 oma 的运行输出重定向至文件时,文件中带有 ANSI 标记的问题