YaST, powerful installation and configuration tool for Linux
YaST
Modules
Contributing
Documentation
Guidelines
Blog
Documentation
Discover YaST development
How the system works
The big picture
YaST consists of several pieces that work together despite being distributed
among several packages and repositories. In order to be proficient in YaST
development, it's crucial to understand what is the role of every component,
how they relate to each other and where they live in the GitHub
infrastructure. That is explained in the
YaST
architecture
document.
That complex system is translated into files and folders in a consistent way all
along the full set of YaST repositories and therefore in the
installed system, as detailed in the
YaST code
organization description
Accessing YaST subsystems from Ruby
The core system of YaST is implemented using a mixture of languages, but the
whole functionality is easily accessible from Ruby, the language used to
implement almost all modules. The
documentation
of YaST Ruby bindings
contains comprehensive information not only about
the way to access SCR or WFM from Ruby, but also about the legacy modes used
during the transition from the YCP language to Ruby, like Ops or Builtins.
Basic libraries
YaST provides a basic API to access several aspects of a
Linux system configuration, from network to packages management and from
hardware status to systemd. YaST basic libraries provide access to that
API and to several YaST specific mechanisms and concepts. Full documentation can
be found on the
yast-yast2 page
on Rubydoc
Agents
At lowest layers, almost every operation in YaST relies on one or several
agents. The
GitHub of yast-core
documents the full range of agents that are
available through the SCR interface.
Graphical interface
YaST interface relies on libYUI, an engine that provides abstraction from
graphical user interfaces (Qt, Gtk) and text based user interfaces (ncurses).
The YaST code interacts with the underlying libYUI system through the
UI bindings
. Some
shortcuts
are provided by the abovementioned Ruby bindings in order to make the usage
of UI bindings even more straightforward.
Even if libYUI is used through the very convenient wrappers, the
UI
reference documentation
and the
UI
layouts and events guide
from the original C++ API are still the best
sources of information to know how every class and method works under the hood.
Currently there is also new experimental on the fly generated documentation for this
API
The installation process
YaST is not only the Swiss Army knife of Linux configuration, it's also a very
flexible and configurable installer used in all versions of openSUSE and SUSE
Linux. In order to understand how the different pieces interact
during the installation process, from Linuxrc to the final steps of
installation, including configuration proposals or partitioner, it's highly
recommended to read the
documentation of the
yast-installation module
Tutorial
Those willing to take their first steps into YaST development can follow
the tutorial titled
creating
the YaST journalctl module
". The document, targeted to developers
with no prior experience with YaST, presents a very simple example of a
YaST module developed from scratch and provides a good overview of the
YaST architecture and development tools.
Tips & tricks
When developing or debugging YaST, there are several gotchas that can be
extremely useful. Some of them are not only targeted to developers but also to
users and are collected in the
YaST tricks page
at the
openSUSE wiki.
In addition to those tricks, you can find several bits of useful information in
the
YaST
development tips and tricks
document.
US