All of the tools discussed in this chapter work on a wide variety of Linux distributions. One difficulty in designing such a configuration tool is that the details of what these tools must do varies substantially from one distribution to another. For instance, as discussed in Chapter 4, Starting Servers, different distributions may use different methods of starting the same servers. Some use inetd and others use xinetd , SysV startup script locations and numbers differ between distributions, configuration file locations differ between distributions, and so on. This isn't a problem for distribution-specific tools like SuSE's YaST, but tools like Linuxconf and Webmin face a challenge in working with many different distributions.
The answer to this challenge, in the case of both Linuxconf and Webmin, is to rely upon configuration modules. The configuration tool itself provides nothing more than a framework ”code to interact with network clients , ways to allow users to select options and enter free-form strings for things like hostnames, and so on. The configuration tool relies upon modules that fill in the details, such as file locations, information on the format of server configuration files, and specific information that must be collected to configure the subsystem in question. Modules exist for general configuration, such as configuring SysV startup scripts or /etc/inittab settings, and for specific server packages, such as Apache, sendmail, and Samba. These modules can be modified for specific distributions or for specific server packages. When you install a distribution that comes with Linuxconf or Webmin, the configuration package includes modules for the servers included with the distribution, or the modules may come with the individual packages. When you install a configuration program from its home Web site, you must obtain a set of modules for your distribution. Fortunately, these module sets are readily available for most distributions, and usually ship with the configuration tool itself.
The existence of configuration modules makes tools like Linuxconf and Webmin extremely flexible, but they can also pose challenges. Specifically, if modules aren't kept up to date to reflect changes in the systems they're meant to administer, the tools can become unreliable. This may manifest in terms of an inability to configure an updated server, as errors in such a configuration, or even in unreliable operation of the configuration tool itself. These problems have been particularly troublesome for Linuxconf, and Red Hat (its main associated distribution) has ceased installing Linuxconf by default, as of Red Hat 7.1.
Server-specific configuration packages, such as SWAT, have an easier time because they don't need to deal with so much variability. For instance, SWAT needs to read just one configuration file (Samba's smb.conf ). Although this file's location may vary from one system to another, SWAT itself is generally compiled at the same time as Samba, so it can be compiled with the same default location. (You may also specify a nonstandard location when you launch SWAT.) Thus, tools like SWAT don't usually rely upon configuration modules.