引言

一年中的最后两周,以及新年的第一周,是世界许多地方的假期季节,YaSTland 也不例外。但在我们进入休眠模式之前,让我们回顾一下我们在 2019 年最后一次冲刺中实现的最重要的功能和错误修复。这包括

  • 重新激活软件管理器的某些部分,
  • 使用新的 SLE 介质类型实现系统升级,
  • 使 Raspberry Pi 和 IBM Z 系统的安装更加出色,
  • 改进加密的可用性,
  • 减少 ZYpp 的 Snapper 插件的占用空间,
  • 以及一如既往的许多其他小的改进和修复。

让我们从一个救赎的故事开始。我们之前实现了一个功能 fate#326485,该功能要求从软件包管理器 UI 中删除“软件包组”视图。这很简单。

然而,几周后,我们收到一个错误报告,即无法再显示推荐、建议等软件包列表。原来,在 Qt 软件包管理器前端中,删除的“软件包组”视图不仅用于显示软件包中的静态组数据,还包含一些特殊的计算软件包列表,例如孤立软件包、建议软件包或推荐软件包。因此,这些列表在删除“软件包组”视图时作为附带损害而丢失了。

ncurses 软件包管理器不受相同问题的影响,因为在该前端中,这些视图被分组到一个单独的“软件包分类”部分。因此,本次冲刺的任务是某种程度上恢复 Qt 中的列表,并使其再次可供用户使用。

我们部分地恢复了软件包组的删除,并恢复了显示这些特殊软件包组。为了保持一致性,我们也使用“软件包分类”名称来命名该视图,就像在 ncurses 软件包管理器中一样。

The new Package Classification view in Qt

另一方面,ncurses 前端缺少一些列表,例如“多版本软件包”和“所有软件包”。为了进一步提高一致性,我们添加了这些缺失的列表,并进行了一些小的清理和修复,现在 Qt 和 ncurses 软件包管理器都应该提供相同的功能,并且看起来相似。

The revamped Package Classification view in ncurses

用户友好的加密设备名称

说到触发一些可用性改进的错误报告,一些用户指出,当系统启动并提示输入加密设备的密码时,并不总是很容易识别它指的是哪个确切的设备

Booting password prompt before the
change

问题的根源在于,当 YaST 创建加密设备时(在安装过程中通过存储建议,或通过专家分区器手动进行),新加密设备的设备映射器名称是从底层设备的 udev id 生成的(例如,cr_ccw-0XAF5E-part2)。

我们决定改进 YaST 中 Tumbleweed 和未来 Leap 和 SLE 版本的加密命名生成。从现在开始,名称将基于设备的挂载点。例如,如果加密设备将被挂载到根目录,其设备映射器名称将为 cr_root。通常,当加密设备挂载时,设备映射器名称将为 cr_mount_point(例如,cr_home_linux 用于挂载到 /home/linux 的加密设备)。

Booting password prompt after the
change

请注意,基于 udev 的名称仍可能用于某些场景。例如,当设备未挂载或用于间接使用的加密设备时(例如,加密的 LVM 物理卷)。

并且与加密设备的识别相关,我们还在安装过程中激活加密设备时添加了更多关于设备的信息。提供正确的设备的密码非常困难,因为用户需要知道加密设备的 UUID。现在,激活弹出窗口还提供有关底层设备的内核名称的信息,这使得识别它更容易。

New password prompt during installation

因为名称很重要……这引导我们进入下一个主题。

运行大型机是什么感觉?

如您所知,(open)SUSE 运行在各种各样的硬件上,包括功能强大的大型机,例如 IBM Z 系列。我们心爱的发行版的一个优势在于,尽管硬件和范围不同,但在所有受支持的系统中的安装和使用体验非常相似。

一致性和易用性很好,但当你驾驶豪华汽车时,你想在引擎盖上看到该品牌的徽章。因此,在未来版本的安装程序中,在 IBM Z 系统上安装时将显示机器的型号。请参见以下屏幕截图的右上角。

IBM Z Model in the installer

基于文本的安装程序也已被修改,以在类似的位置包含相同的横幅。

IBM Z Model in the text-mode installer

但就像 (open)SUSE 使您能够在大型机上安装和使用 Linux“就像在任何其他计算机上一样”一样,我们也旨在在硬件频谱的另一端做到同样。

Raspberry Pi 分区建议中更好的支持

一年前 我们宣布 openSUSE Leap 15.1 和 SLE-15-SP1 将是第一个可以按照标准安装程序安装在 Raspberry Pi 设备上的 Linux 发行版,而不是部署特定于 Raspberry 的预构建镜像。先决条件是在目标 SD 卡(或磁盘)中存在包含 Raspberry Pi 启动代码的分区。

但现在我们能够为 SLE-15-SP2(和 Leap 15.2)更进一步。得益于这些即将发布的版本中包含的技术,(open)SUSE 将不再需要在所有情况下都需要带有启动代码的单独分区。现在,安装程序可以在所有情况下提出合理的安装建议,即使目标存储设备预先不包含启动分区。请参见,例如,安装程序为在包含 GPT 分区表的 32 GiB SD 卡上安装完全标准的 SLE-15-SP2 Beta1 默认建议的内容(提示:GPT 分区表不能用于在 Raspberry Pi 设备上启动……并且安装程序知道这一点)。

Installer proposal for a Raspberry Pi

有了它,标准 SLE-15-SP2 Beta1(aarch64 版本,当然)在 Raspberry Pi 3 或 4 上的安装就像“下一步”、“下一步”、“下一步”一样简单……唯一的例外是必须手动选择几个软件包进行安装(raspberrypi-*u-boot-rpi3)。希望,SLE 和 openSUSE Leap 15.2 的未来 beta 镜像将在 Pi 上安装时自动选择这些软件包,这将使 (open)SUSE 在这些设备上的体验基本上与任何其他计算机相同。

使用新的介质类型进行 SLE 升级

说到即将推出的 SLE-15-SP2 的标准安装镜像,我们在 我们之前的博客文章 中解释说,SUSE Linux Enterprise (SLE) 及其所有相关产品的这些版本将以两种新的介质类型分发——完整和在线。完整介质包含许多存储库,并且可以在没有网络连接的情况下安装系统。在线介质类似于 openSUSE 的网络安装程序,它不包含任何存储库,并且必须从网络下载所有内容。与 openSUSE 的主要区别在于,SLE 系统需要注册才能访问远程存储库。

但除了安装之外,这两种新的介质类型也可以用于升级现有系统……至少在最新的冲刺中实现所有改进之后。

对于在线介质,如果系统已注册,升级过程将切换所有存储库以指向 SUSE 客户中心 (SCC) 中相应的版本,并将从那里获取新软件。如果系统未注册,则取消升级过程,并建议用户注册系统或使用完整介质。

完整介质可用于升级任何系统,无论是否注册,但每种情况下的过程都不同。对于未注册的系统,存储库将切换到介质中包含的存储库,并且系统将从那里升级。对于已注册的系统,过程与在线介质相同,因此软件将从 SUSE 客户中心的远程存储库中获取。

最后但并非最不重要的一点是,我们还确保使用两种介质的过程适用于 AutoYaST 升级(是的,您还可以使用 AutoYaST 执行无人值守的升级,除了更好的无人值守安装之外)。对于已注册的系统,我们尽可能简化了该过程,只需要访问 SCC 和一个空的 AutoYaST 配置文件。对于未注册的系统,它稍微复杂一些,因为配置文件必须指定应从介质中使用哪些存储库进行升级。但除此之外,该过程运行得非常顺利。

当然,我们还利用机会改进了代码的单元测试覆盖率,并改进了文档,包括我们用于测试的配置文件。

Snapper 插件 for ZYpp 变得更加紧凑和面向未来

Snapper 允许您创建文件系统快照。它有一个伴侣,snapper-zypp-plugin,一个 ZYpp 的插件,它在提交期间自动创建快照。请参见此列表中的“zypp”描述

# snapper list

  # | Type   |Pre # | Date                     | User | Used Space | Cleanup  | Description  | Userdata     
----+--------+------+--------------------------+------+------------+----------+--------------+-------------
  0 | single |      |                          | root |            |          | current      |              
[...]
824 | pre    |      | Tue Dec 17 10:00:27 2019 | root |  16.00 KiB | number   | zypp(zypper) | important=no
826 | post   |  824 | Tue Dec 17 10:02:19 2019 | root |  16.00 KiB | number   |              | important=no
827 | single |      | Tue Dec 17 11:00:01 2019 | root |  16.00 KiB | timeline | timeline     |             
828 | single |      | Tue Dec 17 11:00:01 2019 | root |  16.00 KiB | timeline | timeline     |             

为了使我们的企业产品能够长期支持,我们从 snapper-0.8.7 开始,将此插件重写为 C++。(原始 Python 实现并没有消失,它停留在旧的 Git 提交中。)

因此,Python 正则表达式不再受 /etc/snapper/zypp.conf 文件中的支持。POSIX 扩展正则表达式取而代之,应该足以满足软件包名称匹配的目的。Shell 模式继续保持不变。

新年快乐!

在接下来的三周里,YaST 团队将中断通常基于冲刺的开发节奏。这也几乎肯定意味着我们不会在 2020 年 1 月中旬之前发布任何关于 YaST 开发的博客文章。因此,我们想借此机会祝您新年快乐,充满欢乐和自由软件。

很快再见,并确保以充满乐趣的方式开始新的一年!