In the previous section you got to know how to do a
YaST program. Well, normally YCP-scripts are
executed involving the whole YaST
-machinery, e.g. during
installation, which requires correct embedding of the script into the
surrounding YCP
environment. Fortunately there is a way to let run
YCP
-scripts isolated, i.e. stand-alone.
To do so we make use of the architectural separation of components
featured by YaST
. The “command line version” of YaST
is called y2base and can usually be found in
/usr/lib/YaST2/bin
. You could set the
PATH
to include this location to avoid typing in the
full path every time.
$> y2base -h Usage: y2base [LogOpts] Client [ClientOpts] Server [Generic ServerOpts] [Specific ServerOpts] LogOptions are: -l | --logfile LogFile : Set logfile ClientOptions are: -s : Get options as one YCPList from stdin -f FileName : Get YCPValue(s) from file '(any YCPValue)' : Parameter _IS_ a YCPValue Generic ServerOptions are: -p FileName : Evaluate YCPValue(s) from file (preload) '(any YCPValue)' : Parameter _IS_ a YCPValue to be evaluated Specific ServerOptions are any options passed on unevaluated. Examples: y2base installation qt Start binary y2base with intallation.ycp as client and qt as server y2base installation '("test")' qt Provide YCPValue '"test"' as parameter for client installation y2base installation qt -geometry 800x600 Provide geometry information as specific server options
This help page, showing the possible options in a call of
y2base, is rather self-explaining. For the moment
the interesting parameters are Client and
Server. In Section 2.4, “External Programs” we learned that YaST
consists
of several modules, some of them being
client-components and some others being
server-components. By invoking YaST
in the way
displayed above we can connect any client-component with any
server-component.
Because a YCP
-program (also called YCP
-module) can act as a
client-component, it is possible to connect it with a server-component
suitable of executing it. Since our “Hello,
World!”-program displays something on screen, we need to use
the UI as server-component in this case. As already said the UI is able
to use a text-based console environment as well as a graphical X11
environment which leads to the following two methods of running a
YCP
-script.
y2base file.ycp qt
This will execute file.ycp
in the graphical
Qt-UI.
y2base file.ycp ncurses
This will execute file.ycp
in the text-based
NCurses-UI.