系统工作原理

全局视图

YaST 由多个组件组成,这些组件协同工作,但它们分布在多个软件包和仓库中。为了熟练掌握 YaST 开发,了解每个组件的作用、它们之间的关系以及它们在 GitHub 基础设施中的位置至关重要。这在 YaST 架构 文档中进行了说明。

这个复杂的系统以一致的方式转换为文件和文件夹,贯穿 YaST 的所有仓库以及安装的系统中,具体细节请参阅 YaST 代码组织描述

从 Ruby 访问 YaST 子系统

YaST 的核心系统使用多种语言实现,但几乎所有功能都可以从 Ruby 轻松访问,Ruby 是实现几乎所有模块的语言。 YaST Ruby 绑定文档 包含全面的信息,不仅介绍了如何从 Ruby 访问 SCR 或 WFM,还介绍了从 YCP 语言过渡到 Ruby 期间使用的传统模式,例如 Ops 或 Builtins。

基本库

YaST 提供了一个基本的 API,用于访问 Linux 系统配置的各个方面,从网络到软件包管理,从硬件状态到 systemd。YaST 基本库提供对该 API 以及 YaST 特定机制和概念的访问。完整的文档可以在 Rubydoc 上的 yast-yast2 页面 上找到。

代理

在最低层,YaST 中的几乎每个操作都依赖于一个或多个代理。 yast-core 的 GitHub 记录了通过 SCR 接口可用的所有代理。

图形界面

YaST 界面依赖于 libYUI,这是一个提供图形用户界面(Qt、Gtk)和基于文本的用户界面(ncurses)抽象的引擎。YaST 代码通过 UI 绑定 与底层的 libYUI 系统交互。上述 Ruby 绑定提供了一些 快捷方式,以便更直接地使用 UI 绑定。

即使通过非常方便的包装器使用 libYUI,UI 参考文档 和来自原始 C++ API 的 UI 布局和事件指南 仍然是了解每个类和方法在底层如何工作的最佳信息来源。目前,也为该 API 提供了新的动态生成文档。

安装过程

YaST 不仅是 Linux 配置的瑞士军刀,它还是 openSUSE 和 SUSE Linux 所有版本中使用的非常灵活和可配置的安装程序。为了了解安装过程中不同组件的交互方式,从 Linuxrc 到最终的安装步骤,包括配置建议或分区器,强烈建议阅读 yast-installation 模块的文档

教程

那些希望迈出 YaST 开发第一步的人可以按照标题为"创建 YaST journalctl 模块" 的教程。该文档面向没有 YaST 先验经验的开发人员,展示了一个从头开始开发的 YaST 模块的非常简单的示例,并提供了 YaST 架构和开发工具的良好概述。

技巧与窍门

在开发或调试 YaST 时,有一些注意事项可能非常有帮助。其中一些不仅针对开发人员,也针对用户,并收集在 openSUSE wiki 的 YaST 技巧页面 中。

除了这些技巧,您还可以在 YaST 开发技巧和窍门 文档中找到一些有用的信息。