事务性更新:改进和常见问题解答
2018年4月20日 | Richard Brown | 无许可
在几周前发布的一篇文章 宣布 openSUSE Tumbleweed & Leap 15 中事务更新的可用性 之后,我们收到了一堆关于这项令人兴奋的功能的问题和反馈。
当然,我们并没有满足于现状,而是尽我们所能,尽快地实施了尽可能多的改进。本文涵盖了我们所做的工作,并解答了关于 openSUSE 中这项新功能的一些常见问题。
重命名系统角色
在宣布向 openSUSE 发行版引入事务更新的新系统角色时,它的名称是带有事务更新和只读根文件系统的服务器。

…这有点冗长
之所以命名如此冗长,是为了明确这种服务器补丁方式与传统的 Server (Text Mode) 角色不同。
事后看来,我们意识到这过于冗长,现在已经在 openSUSE 的两个发行版中重命名了这两个角色,以提高清晰度。
如果您想安装一个具有读写根文件系统并使用传统的 zypper 进行补丁的服务器,现在可以选择名为 Server 的安装选项。
对于一个具有只读根文件系统并使用 transactional-update 进行补丁的服务器,现在应该选择名称更简单的 Transactional Server

更简单的系统角色命名
调整后的软件包选择
此前,Server 和 Transactional Server 角色都使用 openSUSE 的 Console 模式作为默认软件包选择。该模式提供了许多有用的控制台工具(如 emacs),但对于所有希望将 openSUSE 用作服务器的用户来说,这已经超出了需要。因此,我们已经纠正了这一点,并将两个角色都基于更精简的 Enhanced Base 模式,我们也在积极地对其进行修剪,以使其尽可能高效。我们的目标是确保我们的安装包含每个人开始使用 openSUSE 服务器所需的一切,但不多于所需。
默认自动事务更新
在 Transactional Server 角色中,我们最初并没有计划默认情况下每天自动运行 transactional-update。考虑到需要重启才能激活每次更新,我们的第一想法是避免在未经用户知情的情况下自动重启他们的服务器。但关于这个话题的反馈非常明确。因此,在所有安装中,默认情况下都已启用 transactional-update.timer 和 rebootmgr.service。
Transactional Server 角色现在具有 完全自动化的更新安装,并且在更新安装后,默认情况下会在早上 0330 到 0500 之间重启。

事务更新现在默认自动
如果您希望修改重启的时间和行为,请相应地编辑 /etc/rebootmgr.conf。或者,如果您想完全负责更新和重启您的 Transactional Server,可以根据需要禁用 transactional-server.timer 和 rebootmgr.service systemd 单元。
常见问题解答
问:更新时重启是否需要明显更长的时间?
答:完全不是。由于我们使用了 btrfs 和 snapper,因此由 transactional-update 更新的系统启动时间与“正常”openSUSE 安装相同。回滚也只需要几分之一秒的时间来准备和生效。
问:transactional-update 是否使用与 zypper 相同的仓库?我能安装任何我想要的软件包吗?
答:是的。通过 transactional-update 应该可以安装为您的发行版选择构建的官方和非官方仓库中的任何软件包。仓库管理可以使用 zypper,就像常规的 openSUSE 安装一样。有可能有些软件包在只读根文件系统上安装时会出现问题。这表明缺乏对 openSUSE 既定打包指南的遵守,如果有人发现此类软件包问题,他们应该 报告错误。
问:是否有当前或未来的方法可以在桌面系统上使用此功能?
答:目前,我们专注于确保此功能在服务器用例中工作得非常好。但实际上,任何运行 transactional-update pkg in $desktop-pattern-of-their-choice 并安装任何桌面环境和软件的用户都不会受到阻止。有些人已经这样做了,我们相信 openSUSE 的桌面团队会考虑贡献,以便开箱即用地使 Transactional openSUSE Desktop 成为出色的用户体验。
问:我可以在没有只读根文件系统的情况下使用 transactional-update 吗?
答:是的,transactional-update 可以在没有只读根文件系统的情况下工作。但是,选择这种方法的用户应该知道,重启时他们的根文件系统将是 transactional-update 时创建的那个。这意味着可能会丢失在 transactional-update 和 reboot 之间所做的任何自定义更改。因此,如果未使用只读文件系统,建议在每次更新后立即 reboot。
问:SUSE 客户何时可以期望在 SUSE Linux Enterprise 的某个版本中看到此功能?
答:虽然这是一个好问题,但作为 openSUSE 项目,我们无法提供太多可靠的答案。 transactional-update 已经可以在 SUSE 的 CaaS Platform 中使用,并且我们了解到可能会考虑在 SUSE Linux Enterprise 15 Service Pack 1 中包含此功能。对此感兴趣的 SUSE 客户应联系其常用的 SUSE 联系人。
问:我如何贡献?
答:欢迎在 transactional-update 或 rebootmgr GitHub 项目中提出任何更改建议。如果您对事务更新或 Kubic 项目有任何其他想法或问题,欢迎加入我们的 IRC 频道,#kubic on irc.freenode.org,或通过邮件发送至 openSUSE Factory Mailing list 与我们联系。
感谢并玩得开心!
类别: 博客
标签