Chapter 1. YaST Development in General

Lukas Ocilka

Chapter in general. 

Klara Cihlarova

Chapter structural correctness, logic checks, ideas and enhancements. 

Table of Contents

1.1. Before You Start Development
1.1.1. Development Environment
1.1.2. Terminology
1.1.3. YaST Directory Structure

1.1. Before You Start Development

Almost every YaST development needs a standard development environment with development tools. A developer should understand the terms used and know the YaST directory structure.

1.1.1. Development Environment

YaST module development is automated in many steps by a number of helper tools. However, if you want to take advantage of it, you must install some additional packages.

Here is the full list of packages needed in alphabetical order: autoconf automake blocxx-devel dejagnu expect gcc gettext-devel glibc-devel hwinfo-devel libgcj libstdc++-devel libxcrypt-devel libxml2-devel liby2util-devel ncurses-devel openssl-devel pcre-devel perl-XML-Writer pkgconfig readline-devel tcl yast2 yast2-core yast2-core-devel yast2-devtools yast2-perl-bindings yast2-testsuite zlib-devel

1.1.2. Terminology

  • YaST Module—In a general view, a YaST module is a stand-alone tool for some functionality, such as the configuration tool for an NFS server, user manager, or system monitoring tool.

  • Project—A project is a general concept for any YaST module.

  • YCP Module—Set of functionality inside a library written in the YCP language. It can have several global or local functions and variables. A YaST module can use several YCP modules. A YCP module itself can also use other modules.

  • Perl Module—The same as a YCP module, but written in Perl.

  • SCR Agent—They are the only way to read and write a configuration or execute system commands. Developer mustn't touch the system by any other way. SCR Agents are very small programs written in C, Bash, or Perl or written as scripts using the unified Ini-Agent or Any-Agent interface. YaST uses the unified SCR YCP module for accessing these agents.

  • Helper Tool—A script or binary that has some functionality for helping a developer achieve fast results by calling many annoying and repetitive commands on its own.

1.1.3. YaST Directory Structure

The directions in this tutorial touch several directories on the system. Here is the list of directories where you can find files or directories related to YaST:

/usr/lib/YaST2/                 -- helpers, libraries, and SCR agents
/usr/share/applications/YaST2/* -- .desktop files of YaST modules
/usr/share/YaST2/               -- base directory of YaST scripts, clients, and modules
/usr/share/doc/packages/yast2*  -- documentation for particular YaST packages
/var/lib/YaST2/                 -- variable data directory
/var/log/YaST2/                 -- logging directory with automatically rotated logs