YaST
is the installation program used by SUSE Linux™ to install Linux on a
system and to administer this installed system thereafter. The notation
“program” is a bit misleading here because in fact YaST
consists of many components and layers. Therefore one may as well regard
YaST
as an installation and administering environment.
Among the most important components in this environment are the
YaST
-modules which are usually written in a YaST
-specific language
called YaST Control Language (YCP
). With
exception of some rare cases the whole high-level functionality of YaST
is formulated in YCP
. When YaST
is running, the YCP
-modules are
interpreted by the low-level YaST
-components and the YCP
-code makes
use of the infrastructure provided by them. The possibility to add such
modules at any time realizes the concept of extensibility that is
inherent in YaST
.
This concept of extensibility by means of modules has been designed into
YaST
from the very beginning. In fact YaST
-modules are the layer of
YaST
the user comes in contact with. Nearly every dialog on screen
during the installation is realized as a YaST
-module and there are also
modules that act behind the scenes to care of specific pieces of
hardware, e.g. the keyboard.
The YaST
-modules mentioned so far come ready-made with the distribution
and provide the core functionality to install and administer a
SUSE Linux™-system, but this need not and should not be the end. The extension
facility is intended to be also used by “third party
people”, e.g. hardware vendors, who want to contribute
YaST
-functionality in some way.
To pave the way for this intention to come alive this document will
provide some insight into the inner mechanics of YaST
. The primary goal
of the following elucidations is to make available the information that
is needed to write YaST
-modules that conform to the programming
paradigm imposed by YaST
.
What This Document Is.
This document explains in some detail how to extend the functionality
of YaST
by means of modules. Of course every module of more than
trivial functionality will have to make use of the features that are
provided by the YaST
-core-components and other YaST
-modules. While
the official YaST
developers documentation is the primary knowledge
base for all YaST
related information, it is a bit overwhelming for
everyone who tries to get into the matter for the first time. Therefore
this document tries to provide a gentle introduction by explaining
things rather explicitly in the beginning and getting more and more
concise towards the end. By providing very many references to the
developers documentation this document can be thought of as a
“guided index” to this voluminous material.
What This Document Is Not.
This document will not explain the “binary”
particularities related to YaST
, i.e. there will be no implementation
notes on how the low-level machinery of YaST
is realized. Because
YaST
implies the module concept for extensibility, only this approach
is promoted here. The “engine” that executes these modules
and how it is assembled is subject to the following explanations only
in so far as it is necessary to understand the interaction of the
various components.
The Audience Of This Document.
So this document is intended for all people who want to make use of the
YaST
-functionality by providing modules for a specific task.
Additionally the information presented herein might be interesting for
all those who want to adept something about the whys and wherefores
related to YaST
as such. Furthermore, to get most out of this
reading, the reader is supposed to have some programming experience in
a structured programming language, ideally C/C++. Some expertise in
functional programming could also be helpful but is not really
necessary.