如果某样东西没有坏,就不要去修它。遵循这个原则,YaST 团队在最新的冲刺中几乎没有花时间在 SUSE Linux Enterprise 15 SP3 或 openSUSE Leap 15.3 上。但这并不意味着我们无所事事。恰恰相反,我们投入时间重组 YaST 的一些内部结构。这项工作有望在中期获得回报,并影响以下主题:
- 本地用户管理,尤其是在安装期间。
- 网络配置代码的统一。
- 错误处理和报告。
- 我们的 UI 工具包的重组。
那么,让我们更详细地了解一下这些内容。
在之前的博文中,我们已经宣布正在考虑重构 YaST 用户模块,以改进本地用户管理并降低与模块当前复杂性相关的风险。现在我们可以说,我们在这一方面取得了良好的进展。我们正在开发仓库的一个单独分支,该分支尚未提交到 Tumbleweed 或任何其他可用发行版,这意味着我们的用户目前还没有可以测试的具体内容。但我们希望在下一个冲刺结束前完成安装期间的用户创建的完全重写,同时仍然与依赖用户管理的所有其他 YaST 组件保持兼容。
在最新的冲刺中,我们达到的另一个里程碑是移除了遗留网络组件,即 LanItems。一切都始于 bug#1180085 的报告,该报告是由安装程序引起的,安装程序使用新的 Y2Network(又名 network-ng)基础设施执行大多数任务,但仍然依赖于该遗留组件来建议安装 wpa_supplicant 包。因此,我们抓住机会,在 YaST 中寻找并销毁了旧组件的所有用法,用新基础设施中的等效调用替换了对它的调用。减少了需要并行维护的代码,减少了出错的空间。
这并不是本冲刺中我们将错误转化为改进 YaST 内部结构的唯一机会。还报告说,在网络配置文件中使用无效的 bootmode 或 startmode 字段值可能会导致 YaST 崩溃。除了修复这个问题之外,我们还利用这个机会 引入了一个全新的通用机制,用于处理 YaST 中的错误并将它们以结构化和集中的方式报告给用户。除了 YaST 网络模块之外,新的内部基础设施将在后续冲刺中被 YaST 的多个部分采用。事实上,它已经在前面提到的本地用户管理重写中被使用。
最后,我们想提到的是,我们继续致力于改进新的统一 LibYUI 仓库。除了翻新作为着陆页的 README 文件之外,我们还创建了新的脚本,以实现更愉快和灵活的构建过程,我们正在改进与 Gtk 后端和 libyui-mga(由 Mageia 开发和维护的额外组件)的兼容性,并且我们发布了 API 文档,该文档位于一个中央位置,现在在每次仓库更改时都会自动更新。
当然,在实施所有上述改进的过程中,我们还修复了 SLE-15-SP3 和 openSUSE Leap 15.3 以及旧版本和 Tumbleweed 的其他一些错误。但是,谁想写关于枯燥的错误修复呢?我们更愿意回去工作,并在两周后的下一次报告中准备更多令人兴奋的消息。到时再见!