又到了 YaST 团队的另一份开发报告,内容如常,远不止 YaST。这次我们将涵盖

  • 修复 YaST 图形界面中一个难以捉摸的错误
  • YaST 中对事务性系统的初步处理
  • 对 1:1 管理事务性系统的总体反思
  • Cockpit 度量功能的一些改进

让我们逐一了解。

追踪 YaST 渲染问题

在过去一年左右的时间里,我们收到了一些关于 YaST 图形界面存在渲染问题的报告,尤其是在 HiDPI 显示器和 openQA 上。报告者提供了截图,显示一些小部件似乎被绘制在先前的小部件之上,而没有进行中间清理,因此屏幕最终显示了难以阅读的旧小部件和新小部件的混合体。

我们无法重现这个问题,并试图让来自不同领域(如图形驱动程序维护者、虚拟化专家或 X11 开发者)的人员参与追踪问题,但没有成功……直到现在!我们终于找到了错误的隐藏之处并将其消灭了。

如果您对技术描述感兴趣,请参阅 pull request,其中包含有缺陷的 HiDPI 检测、意外的 Qt 行为和 QSS 样式表的异常。它还包括对所描述的(现在已修复)问题的截图。

YaST 在事务性系统上

说到 YaST 和已知问题,您可能还记得我们在 上一篇帖子 中提到,在使用 YaST(容器化或非容器化)在像未来的 ALP 这样的事务性系统中按需安装软件时,我们发现了一个非常明显的问题。此类系统会阻止在运行时安装新软件包,因此在使用新软件之前始终需要重新启动。

我们探索了几个选项,以使 YaST 在事务性系统中尽可能流畅地工作,例如执行所有修改,包括软件包安装和配置更改,在一个事务中进行,并在流程结束时进行最终重新启动。但我们发现这太冒险了,因为它意味着在不完全准确地表示管理系统在重新启动后将如何呈现的临时系统快照上工作。

最终,我们实现了下图所示的解决方案。目前,如果 YaST 检测到它正在事务性系统上运行,因此无法安装缺少的软件包并继续,那么它将简单地要求用户安装软件包并重新启动。

YaST requesting Bind to be installed

这样,YaST 不再在事务性系统上看起来损坏(无意义地尝试安装软件包),但采用的解决方案只是一个初步的方法,我们可能会在未来对其进行改进。

超越 YaST:事务性 ALP 上的按需安装

软件包管理和事务性系统所描述的挑战并非 YaST 独有。我们实际上在 Cockpit 及其度量功能方面也遇到了类似的问题。因此,我们决定需要收集一些意见,以找到 ALP 和其他事务性系统最合适和一致的解决方案。

作为起点,我们编写了 本文档,描述了情况并提出了一些开放性问题。迄今为止,从 ALP 指导委员会成员那里收集到的反馈表明,我们应该改进 YaST,以便进一步协助用户安装软件包和重新启动事务性系统。同样适用于 Cockpit,但这可能更具问题性,因为它与 Cockpit 开发者在这方面的当前愿景不一致。

我们始终乐于接受更多评论和意见。如果您有任何意见,您知道如何联系我们。;-)

改进 ALP 上的 Cockpit 度量

说到 Cockpit 的度量功能,我们还利用机会改进了它在 ALP 上的行为。我们通过修复自身一无所做来实现的。:-) 我们只是诊断了问题并在 pcp 包中 报告了错误,并在 Cockpit 中报告了错误。这两个问题现在都由各自的维护者修复,未来的 ALP 预发布版本将提供更愉快的开箱即用的 Cockpit 体验。

很快再见

我们继续致力于 YaST,尤其是在我们之前报告中描述的 安装程序安全策略 上,改进 YaST 和 Cockpit 的用户体验与 ALP,以及其他一些主题,我们将在未来几周内报告,一旦我们有可展示的实际结果。

与此同时,我们鼓励您参与 openSUSE 开发和推广,并随时关注更多新闻。祝您玩得开心!