改进服务管理器的用户体验

说到上一篇报告,我们之前介绍了 YaST 服务管理器模块的几项改进,包括新的“应用”和“显示日志”按钮。使用“应用”按钮,对服务进行的所有更改都将应用,而无需关闭服务管理器,这允许您继续使用它并检查服务的日志,而无需重新启动服务管理器。但这个新的“应用”按钮只有在有内容需要保存时才有意义,因此在这个 sprint 中,我们改进了 UI,以便在尚未更改任何内容时禁用该按钮。此外,现在更容易知道到目前为止我们对服务管理器进行了哪些编辑。对于服务的每次更改,新值都将使用特殊标记 (*) 显式突出显示。例如,当您将服务的启动模式从“启动时”更改为“按需”时,您将在相应的列中看到“(*) 按需”,请参阅示例。

Services

服务列表和对其进行的更改可能非常长。因此,除了新的标记之外,现在在使用“应用”或“确定”按钮时会显示一个确认弹出窗口。此弹出窗口将呈现一个摘要,其中包含将应用的所有更改,即哪些服务将被启动或停止,哪些服务将将其启动模式更改为“启动时”、“按需”或“手动”,甚至在您修改了它时,新的默认 Systemd Target 将是什么。请参阅以下屏幕截图中的示例。

New summary of changes in the Services Manager

这些改进将很快在 openSUSE Tumbleweed 上发布,并将在即将发布的 SLE (SLE-15-SP1) 和 openSUSE Leap (15.1) 版本中提供。

Yast2 Systemd 类重组

与服务管理器中的更改相关,并且更侧重于开发人员的说明。Yast2 Systemd(YaST 组件的集合,在底层处理 Systemd 单元)也已完全重组为更符合 Ruby 的方式。从 YCP 样式的模块迁移到一组类,这些类在自己的适当命名空间中表现得像 Ruby 生态系统中良好的公民。

AutoYaST 支持 Xen 虚拟分区

为了继续改进上一轮 sprint 中引入的功能,我们还改进了对所谓的 Xen 虚拟分区的支持,我们之前在我们的上一篇文章中介绍了它。如前所述,旧的存储堆栈将 Xen 设备表示为 /dev/xvda1,作为不存在的 /dev/xvda 硬盘的分区。在新堆栈中,这些设备被视为它们应有的样子,即独立的块设备,没有从无处而来的虚构磁盘。

但是来自 SLE-12 或 Leap 42.x 的 AutoYaST 配置文件仍然假定存在将 Xen 虚拟分区分组的硬盘。因此,除了在上一个 sprint 期间分区器中引入的修复之外,我们还必须教新的存储堆栈如何处理像这样奇特的 AutoYaST <drive> 部分,用于描述 Xen 设备(xvda1xvda2 确实存在于系统中,xvda 不存在)。

<drive>
  <device>/dev/xvda</device>

  <partition>
    <partition_nr>1</partition_nr>
    ...information about /dev/xvda1...
  </partition>

  <partition>
    <partition_nr>2</partition_nr>
    ...information about /dev/xvda2...
  </partition>
</drive>

该修复将作为安装程序自更新补丁发布,以便安装 SLE-15(并可以访问自更新存储库)的用户可以利用它。从中期来看,我们需要提出一种更现实的格式来在 AutoYaST 配置文件中表示这些设备,但到目前为止,当前 AutoYaST 格式的限制迫使我们保持当前方法。

忽略非活动的 RAID 阵列

但这并不是本 sprint 中 Storage-ng 的唯一新技能。它还学会了如何更好地管理非活动的 RAID 阵列。MD RAID 阵列构建用于处理底层物理设备的故障。当某些设备发生故障时,RAID 变为“降级”,这意味着数据仍然可访问,但现在是时候修复问题了。当过多的设备发生故障时,RAID 变为非活动状态,并且在修复之前无法再运行。我们的分区器无法很好地处理这种情况,弹出了一个通用的“意外情况”错误消息。

Generic error message in Storage-ng

我们已经修复了该问题,并且存储堆栈不再对找到非活动的 RAID 阵列感到困惑。更重要的是,它现在显示一个“活动:是/否”字段在 RAID 标题下,以告知用户 RAID 是否处于如此糟糕的状态。

Partitioner displaying an inactive RAID array

所有这些将很快作为 SLE-15 和 Leap 15.0 的维护更新提供。到目前为止,尚未引入任何机制来阻止用户使用分区器修改非活动的 RAID 阵列。这将在未来到来,以及针对 SLE 和 openSUSE Leap 未来版本的 Storage-ng 中针对 MD RAID 的其他改进。

安装服务器模块中的媒体支持

这很尴尬,但事实证明,SLE15 和 openSUSE Leap 15.0 中的 YaST 安装服务器模块无法添加 SLE15/Leap15 安装介质。原因是新的介质使用不同的存储库格式,并且安装服务器模块在尝试添加新的存储库时崩溃了。

幸运的是,该修复很简单,允许正确添加新的介质。我们计划为 SLE15、openSUSE Leap 15.0 和 SLE12-SP3 发布维护更新。事实证明,SLE11-SP4 中的代码更健壮,不会崩溃,因此我们不需要在那里进行更新。

改进系统角色的帮助文本

我们最近收到了一份错误报告,说明阅读安装屏幕中解释系统角色的帮助文本有多么困难。因此,我们将其视为一个机会,来尝试我们的帮助文本系统有多灵活。添加一些富文本格式使其在图形模式下看起来更好,并且也令人惊讶地在文本模式下表现良好。让我们看看来自 Leap 15.0 的一些屏幕截图,尽管该修复也适用于 openSUSE Tumbleweed 和 SLE15 系列。

这是修复之前的样子。

The poorly formatted help of the System Roles screen

现在是这样,在 Qt 和 Ncurses 中,使用新的格式。

The properly formatted text of the System Roles screen

Proper format even in text mode

修复 YaST HTTP 服务器模块中的 PHP 支持

YaST HTTP 服务器模块允许在 Apache Web 服务器配置中启用 PHP 支持。但是,由于该模块没有积极开发,事实证明 PHP 支持已损坏。YaST 想要安装 apache2-mod_php5 包,该包在 openSUSE Leap 15.0 或 SLE15 中不可用,有一个更新的 apache2-mod_php7 包。

在检查其他必需的软件包后,事实证明一些其他 Apache 模块也存在类似的问题。为了避免将来再次出现此问题,我们添加了一个额外的测试,该测试检查所有潜在已安装软件包的可用性。如果存在新版本或软件包已删除,我们应该通过持续集成提前收到通知,而不是稍后收到用户错误报告。

敬请期待

当然,除了上述亮点之外,我们还修复了几个小的和中等错误。我们计划继续以多种方式改进 YaST……并及时向您更新。所以不要走太远。