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.