正如在之前的文章中所承诺的那样,我们会尽力向大家更新 YaST 世界的最新动态。圣诞节前,我们完成了一个特别短的冲刺,期间还穿插着又一次成功的 Hackweek。尽管我们总是会留出一些时间来修复错误,但最近两个冲刺主要集中在展望未来,实现解决旧问题的新的解决方案,并尝试为一些我们长期维护的遗留组件准备替代方案。以下是亮点。

SCR 替换

为了对系统进行底层访问,YaST 使用一个名为 SCR 的库,该库继承自旧的 YCP 时代。它用于调用脚本,以及读取和写入文件。它的设计已经显得有些过时,并且从 Ruby 中使用它也过于复杂。我们认为 SCR 是 YaST 开发新手最大的困惑来源之一。最后,SCR 仅由 YaST 使用,这意味着所有的维护工作都由我们承担。

我们希望为未来采用一种新的方法。对于运行脚本,我们计划使用一个名为 Cheetah 的 Ruby gem,对于访问配置文件,我们计划依赖 Augeas

以 YaST2-Bootloader 中需要的一些改进以及 perl-bootloader 的弃用为起点(或者说借口,如果你更喜欢的话),我们在这个冲刺中开发了所有可以让我们轻松地在 YaST 中使用 Cheetah 和 Augeas 的组件。

对于 Cheetah,我们向 upstream 项目贡献了两个特性:chroot 支持 和提供 环境变量 的能力。

对于 Augeas,我们开发了一个面向对象的层,名为 Config Files Api(简称 CFA)。CFA 的理念是通过插件提供特定的功能。当然,我们开发的 第一个插件 旨在操作所有的 Grub2 配置文件。

下一步是将这些新组件集成到 YaST2-Bootloader 的下一个版本中,很快就会出现在你的 Tumbleweed 仓库中。当然,在经过所有常规的手动和 openQA 测试之后。

Libstorage 替换

另一个让 YaST 开发人员头疼的底层组件是 libstorage。我们使用它 - 特别是在安装程序和分区程序中 - 来访问磁盘、分区、卷等等。再次强调,其原始设计存在根本缺陷,限制了我们很多,我们已经梦想了很长时间编写它的替代品。

为了使这次重写适应 Scrum 流程,我们使用新的重新设计的库(在 Github 上找到代码,在 OBS 上找到软件包)来编写安装程序分区方案的原型和新的 YaST 分区模块。

这个新模块仅旨在作为测试平台,以展示新库的开发并推动其集成过程。它不面向最终用户,但在这个冲刺之后,它已经可以做一些当前分区器无法做到的事情,甚至显示一些非常适合调试和验证库行为的漂亮图表。

Libstorage Tech Preview: action graph

如果你不介意使用不受支持的软件破坏你的系统,你可以随时获取 代码软件包

AutoYaST 集成测试

测试在软件开发中至关重要。当你开发安装程序时,集成测试是必不可少的。在最近的冲刺中,我们一直在开发和改进我们自己的用于测试 AutoYaST 驱动的安装的解决方案,该解决方案由一组测试和一个运行框架组成。

这个冲刺的目标是将测试和框架解耦。使我们能够在 openQA 中重用我们的测试。作为副作用,我们希望简化测试框架的安装和使用。

这两个目标都已实现,现在你可以按照 仓库中的说明 安装 AutoYaST 集成测试(名字不太原创),并且已经有一个 openQA 实例直接运行 单独可用的测试

aytests-help

Snapper 开发文档

最后但并非最不重要的一点是,作为开发(和 Scrum 原则)的副作用,我们改进了 Snapper 的开发文档。请在 通常的 Snapper 仓库 中享受它。

就这些了,各位。下一个冲刺下周开始,将持续三周,所以预计在二月初会有更多消息。