- 背景与合作:继续与 GNOME 基金会通过主权技术基金合作,自上次更新后在多方面忙碌。
- 存在问题:Flatpak 是开发、测试和迭代应用的推荐方式,但系统组件和默认系统应用不适合在沙盒中运行,与主机需要更紧密集成。在系统组件上构建和迭代一直是有风险或困难的,在 VM 或容器中迭代繁琐,与硬件交互有挑战,在主机上直接构建会危及系统完整性,在不可变操作系统如GNOME OS上不可行。
- 解决方案:受Lennart Poettering和Jordan Petridis启发,开发了sysext-utils,基于 systemd-sysext 和 BuildStream、Meson 等构建系统的工具集合,使开发者基于系统扩展工作,扩展在运行时叠加在操作系统文件树之上,此方法使系统组件迭代更安全且在不可变操作系统上可行,还能在 CI 上构建工件供下载测试,开始使用的快速方式如代码块所示,sysext-utils 在 GNOME OS 开发树中可用或可安装在系统上,且会运行常见集成步骤。
- 局限性:通过测试和基准测试针对 GNOME 最复杂组件(合成器和桌面即 Mutter 和 Shell)来确定该方法的局限性,与 GNOME 社区交流后明确此方法能做和不能做的:不是包管理器,若系统组件更改需拉取其他组件,这些组件也需通过系统扩展提供;不是虚拟环境,要么在实际主机上测试(可能需中断会话),要么在虚拟机上测试。需更多工作使其成为最复杂用例的完美开发者体验,但已能在 CI 上为 GNOME Shell 生成系统扩展。
- 未来工作:愿望清单上已有一些期望,基于与社区的交流和上述局限性,认为值得探索使用systemd-vmspawn(Codethink 的另一个贡献)来解决一些用例和当前局限性,希望有一天能为 GNOME 提供统一的开发、构建和测试更改的方式,已能单独构建和测试组件,开始探索使用系统扩展加快 GNOME 端到端测试管道,后续会有更多相关内容,若想了解更多可通过sales@codethink.co.uk联系。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。