Grouping Packages: comps.xml

Grouping Packages: comps .xml

Anaconda, the Red Hat Linux installation program, uses the comps.xml file to set up your installation. This file is located on the first installation CD, or the network source, in the /RedHat/base directory. It is written in XML, which is primarily used for web pages. It includes tags that are functionally similar to the standard language of web pages, HTML.


Once Red Hat Linux is installed (on a standard Intel type PC), you can also find comps.xml in the /usr/share/comps/i386 directory. If possible, open this file in a text editor to follow the descriptions in the first part of this chapter.

The comps.xml file includes four basic sections. First are mandatory package groups that are normally installed with every Red Hat Linux installation. Then you have individual package groups, which you can select during the installation process. Third, these groups are organized in categories, which you can see during the graphical installation process or through the redhat-config-packages utility described in Chapter 19 . Finally, there is a list of dependencies, which are packages required by others.

Once you understand comps.xml , you can edit this file. For example, you can add stanzas with your own special package groups. You can also delete or hide stanzas that you don t want users to install on their computers, such as Graphics or Games .


Red Hat Linux is organized through the Red Hat Package Manager (RPM). Red Hat software is collected together in RPM files, which end with .rpm . When RPM packages are collected together in comps.xml , they are organized in package groups.

Basic comps.xml Stanzas

There s a standard organization to each stanza in the comps.xml file. Like HTML, each stanza is enclosed with a starting tag such as < group > and an ending tag such as < /group >. Each group has an identifier, as in the following:


Next, these lines determine whether a user is allowed to select the group, and whether it s installed by default:

 <uservisible>false</uservisible> <default>true</default> 

This combination means that this particular group is installed by default. Since this package group isn t visible to the user during the installation process, Anaconda will automatically install it.

If you don t see either tag, < uservisible > is true and < default > is false. In other words, the associated package group is visible but not selected during the installation process.

Each group includes a name and a description; the comps.xml file includes versions of the following lines in different languages. These commands list the name of the KDE package group, the name in German, and an abbreviated description in the same language:

 <name>KDE Desktop Environment</name> <name xml:lang="de">KDE Desktopumgebung</name> <description>KDE ist eine leistungsstarkes</description> 

Some groups depend on others. For example, the Graphics group depends on the base and base-x groups, as documented by the following commands (we omitted several commands for clarity):

 <group>    <id>graphics</id>    <name>Graphics</name>    <grouplist>       <groupreq>base</groupreq>       <groupreq>base-x</groupreq>    </grouplist> </group> 

Finally, there are the packages associated with each group, as delineated by the < packagelist > tag. Some packages are "mandatory," meaning that the package can t function without them. For example, the Windows File Server package group can t function without the samba-client and samba RPM packages:

 <packagelist>      <packagereq type="mandatory">samba-client</packagereq>      <packagereq type="mandatory">samba</packagereq> </packagelist> 

Other packages are classified as default or optional. Users who select individual packages during the installation process can select or deselect these packages.

Finally, most of the comps.xml file includes a list of dependencies. For example, here is a list of dependencies for the m4 macro processor described in Chapter 26 :

 <package>    <name>m4</name>    <dependencylist>       <dependency>bash</dependency>       <dependency>info</dependency>       <dependency>glibc</dependency>    </dependencylist> </package> 

Don t edit the dependency list unless you know what you re doing. Otherwise, you or your users could end up installing programs without required foundation software such as shells or language compilers.

Mandatory Groups

There are two mandatory package groups in comps.xml: Core and Base. The Core group includes RPM packages that Linux can t live without; some of these packages are listed in Table 5.1. For a full list, see Web Chapter 5, which can be found on the Sybex website at .

Table 5.1: Some Core Linux Packages




The first package installed in Red Hat Linux; it should never be deleted.


The Bourne Again Shell; it s the default Red Hat Linux command interpreter.


An archiving utility; see Chapter 14 .


The basic Linux filesystem management commands.


The standard directory layout.


Standard C language libraries.


The default Linux bootloader; see Chapter 11 .


For USB and IEEE1394 devices.


A package that includes basic networking commands such as ping .


For managing a console, fonts, and the keyboard.


The Linux kernel.


A package that supports the GNU C language compiler.


A package that includes the passwd command.


System Information utilities, such as ps .


For configuring a software RAID device.


A package that includes the Red Hat Package Manager; see Chapter 10 .


Some basic /etc configuration files , such as passwd , group , profile .


The vi editor.

The Base group includes RPM packages that make Red Hat Linux useful to administrators. A very few of these packages are listed in Table 5.2. For a full list of packages, see Web Chapter 5.

Table 5.2: Some Base Linux Packages




Supports the at and batch commands described in Chapter 13 .

bind- utils

Contains commands for checking DNS (Domain Name Service) servers; see Chapter 24 .


For regularly scheduled jobs; see Chapter 13 .


Contains the DHCP (Dynamic Host Configuration Protocol) client.


Contains the FTP (File Transfer Protocol) command-line client.


Contains the Red Hat hardware probing tool.


Contains Network File System (NFS) commands; see Chapter 28 .

openssh- clients

For SSH (Secure Shell) client connections.


Allows you to set quotas; see Chapter 09 .


Lets you configure certain users with root privileges.


Contains the Telnet command-line client.


Contains the Red Hat Update Agent; see Chapter 10 .


Contains the NIS (Network Information Service) client; see Chapter 28 .

These package groups together include nearly 450MB of files. There is incidentally one other group in comps.xml that is always installed: Dialup Networking Support. Now let s take a look at the other package groups that we see during the Red Hat Linux installation process.

Package Groups

In this section, we ll look at each package group in some detail. It should help you decide on a standard set of software packages to install on your computers. A complete list of packages in each of these groups is available in Web Chapter 5.

You may not see all of these groups during the Red Hat Linux installation process; as noted earlier, you can configure comps.xml to leave out one or more groups from the display.

The order of packages in this section corresponds to the comps.xml file available as of this writing. It may change when Red Hat Linux 9 is released. And the order is different from what you see during the Red Hat Linux installation process.

Some package groups depend on others. For example, the Office/Productivity package group won t work unless the X Window System package group is also installed. One component of this group, OpenOffice, requires installation of a number of other packages, as shown in the dependencies section of the comps.xml file.

Printing Support

It may seem strange to have the Printing Support package group this early in the comps.xml file. The fonts associated with this package are required for the GUI. Naturally, Printing Support also includes basic drivers and utilities associated with both the CUPS and LPD services described in Chapter 25 . This group is installed by default.

X Window System

The X Window System package group includes the XFree86 Server and associated packages required to configure a basic GUI on your Linux computer. It includes some basic redhat-config-* utilities for managing the date, the network, the service runlevel configuration, sound, users, printers, and of course, the X Window.

You need this group if you want to install a desktop such as GNOME or KDE. It s installed by default, and requires the Printing Support package group, primarily for its fonts.

Other commands in comps.xml may refer to this group by its ID; for example, the following command refers to the < id > of the X Window System:


Dialup Networking Support

The Dialup Networking Support package group includes the basic text utilities required to make a connection via telephone modem. Other GUI Internet connection utilities depend on this package (see Chapters 16 , 17 , and 21 ). This package group is always installed as a part of Red Hat Linux 9.

GNOME Desktop Environment

The GNOME Desktop Environment package group contains the software you need to run the GNOME desktop. It includes basic applications such as text editors, calculators , and more.

You should install GNOME or KDE for users who want a GUI desktop environment. It won t work unless you install the X Window System package group. GNOME is the default Red Hat Linux desktop, and we cover it in Chapter 16 .

KDE Desktop Environment

The KDE Desktop Environment package group contains the software you need to run the KDE desktop. It also includes basic applications such as text editors and calculators. And like the GNOME Desktop Environment package group, it won t work unless you install the X Window System package group. KDE, which is the most popular desktop for other Linux distributions, is covered in Chapter 17 .

Graphical Internet

The Graphical Internet package group includes basic GUI utilities associated with Internet connections. They include the Mozilla web browser and the Evolution mail manager, as well as several chat and related utilities. While this isn t a book on GNOME or KDE, many of these utilities are described in Chapters 16 18 .

Text-Based Internet

There are a number of handy utilities that you can use to connect to the Internet from a text console. For example, lynx is a web browser with a surprising array of features, and pine is a competent e-mail client that has been deprecated; mutt is a good alternative.

Sound and Video

This is an all-in-one package group for controlling, configuring, and commanding a sound card. It includes several tools for recording multimedia or data on CDs and DVDs.


The Graphics package group includes several utilities for managing pictures, screenshots, and other graphics. This includes The GIMP and associated data, which is briefly covered in Chapter 18 . I ve used The GIMP extensively to create screenshots for this book.

If you want graphics, naturally you ll need the X Window System package group.


This package group includes two fully featured office suites: OpenOffice and KOffice. It also includes office-style applications associated with GNOME Office, plus a couple of other applications, such as a project manager, in the same category. These suites are briefly described in Chapter 18 .

Mail Server

This package group includes several mail servers. Optional packages can help you manage discussion lists, filter unwanted e-mail, and more. For more information on the sendmail and IMAP mail servers, see Chapter 26 .

Network Server

The Network Server package group includes a variety of servers that can be useful for managing a LAN. Available servers range from DHCP (for managing IP address information) to telnet-server (to allow incoming Telnet connections). More information on these servers can be found in Parts V “VII of this book.

News Server

The News Server package group consists of only one package, InterNetNews ( inn ). This server allows you to set up a news server similar to Usenet discussion list servers that you can access through some mail managers. When you look at the dependency list in comps.xml , you ll see that inn also requires the inews package for newsfeeds.

Windows File Server

The Windows File Server package group is also fairly simple; all you need is the samba and samba-client packages to connect to and share with other computers on a Microsoft Windows “based network. When you look at the dependencies, you can see that it requires the samba-common RPM package. Samba is covered in Chapter 29 .

Server Configuration Tools

Red Hat has recently created several configuration tools, starting with redhat-config-* , where * represents the function. This package group allows you to use these tools to configure a number of servers. Although it isn t specified in comps.xml , most of these tools won t work unless you re running an X Window interface.


One tool that does work without the X window is redhat-config-xfree86 , which creates its own GUI even from the regular command-line interface.

FTP Server

The FTP Server package group is straightforward. It includes one package, the Very Secure FTP Daemon. It allows you to set up an FTP server with a decent level of security. We cover FTP configuration in Chapter 23 .

SQL Database Server

The SQL Database Server package group allows you to run a database server, which uses the Structured Query Language. The available servers, PostgreSQL and MySQL, are both foundations for a relational database server. These servers are not covered in this book. For more information, see Mastering MySQL 4 by Ian Gilfillan (Sybex, 2002).

Web Server

The Web Server package group includes two different web servers, Apache ( httpd ) and TUX, which are discussed in Chapter 30 . This package group also includes a number of Apache modules.

DNS Name Server

The DNS Name Server package group includes two packages: bind is the standard DNS server on Linux, and the caching-nameserver package supports a DNS server cache on a computer. DNS is covered in more detail in Chapter 24 .

Authoring and Publishing

The Authoring and Publishing package group covers Linux s native publishing format, DocBook. It s a format for marking up text files that allows you to transform your document into one of several formats, including HTML, RTF, and TeX. The DocBook system is not covered in this book. For futher reading, try DocBook: The Definitive Guide from O Reilly.

Engineering and Scientific

The Engineering and Scientific package group includes a series of packages for calculations. Some relate to linear algebra, to help you solve complex equations. Since this is not an engineering book, we won t cover these packages.


Two of the most popular Linux text editors are part of the Editors package group: vi and Emacs. If you install emacs or its GUI cousin, xemacs , Red Hat Linux automatically installs the associated package groups which follow. Entire books have been written about both of these editors; I cover vi briefly in Chapter 06 .

For more information on Emacs, see the GNU Emacs Manual by Richard M. Stallman (GNU Press; 2002).


The Emacs group includes the Emacs text editor and a couple of packages for editing the LISP and SGML computer languages.


The Xemacs group includes three packages for making Emacs work within a GUI.

System Tools

The System Tools package group includes a wide variety of client and diagnostic software. For example, as shown in Chapter 22 , Ethereal allows you to read clear-text messages on your network. As we explain in Chapter 29 , you can use a number of tools associated with samba-client to read shared directories on a Microsoft Windows “based network.

Administration Tools

The Administration Tools package group includes those redhat-config-* utilities that don t fit into other groups. Naturally, this includes a broad range of tools, from keyboard configuration to user management. For more information on these tools, see Chapter 19 .


Linux has games that you can install as part of the GUI. I don t personally install them, since I don t want to learn how to play another version of Freecell. However, some administrators feel that games can help the novice user become more comfortable with Linux. This package group includes games associated with both the GNOME and KDE desktops.

ISO8859 Support

There are two different ISO8859 font sets that you can install. ISO8859-2 is associated with Eastern European languages; ISO8859-9 is associated with the Turkish languages. These groups include fonts at 75 and 100 dpi (dots per inch).


ISO is the International Organization for Standardization ( ). As strange as it sounds, the acronym does not match the official title (nor does it match the French translation of the title).

Individual Language Support

There are a number of other package groups that may allow you to use Linux in your native tongue. Each individual language group includes fonts; many include spell checkers and translated man pages. As of this writing, support is available for the Cyrillic alphabet, as well as Brazilian Portuguese, British English, Canadian English, Catalan, Chinese, Czech, Danish, Dutch, Estonian, Finnish, French, German, Greek, Hebrew, Hungarian, Icelandic, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovenian, Spanish, Swedish, Turkish, and Ukrainian.


Some of these languages require different font sets; for example, Ukrainian requires the Cyrillic alphabet package; Turkish requires the ISO8859-9 package.

Development Tools

If you do any sort of software development work, you ll need at least some of the packages from the Development Tools package group. While this is not a programming book, you ll need some of these packages to recompile the Linux kernel in Chapter 12 .

Prominent packages include automake , which allows you to create Makefile -style configuration scripts; binutils , which includes binary management utilities; and gcc , the GNU C language compiler. This package group also depends on the installation of the Development Libraries package group.

Development Libraries

The Development Libraries package group includes many development programs for a wide variety of applications. These libraries range from kudzu- devel , which supports the Red Hat hardware management utility, to openssl-devel , which lets you configure the SSH server described in Chapter 23 . If you re working on improvements to any of these applications, you may need to install this package group.

Kernel Development

If you re planning to modify or reconfigure the Linux kernel, you ll need to install the Kernel Development package group. This group includes the kernel-source package; it also depends on the installation of the Development Tools package group. For more information on these packages and managing the kernel, see Chapter 12 .

Legacy Software Development

Red Hat has relatively recently upgraded the GNU C language compiler packages. You may still be using software that requires older versions of this package. These legacy packages are organized in the Legacy Software Development package group.

X Software Development

If you re working on the XFree86 software, you may need to install the X Software Development package group. This group includes the packages you need to develop applications for the X Window system. Since there are other desktops, this group does not require the software associated with the GNOME or KDE Software Development packages.

GNOME Software Development

If you re developing applications for the GNOME desktop, you ll need to install the GNOME Software Development package group. A couple of key packages include gtk+-devel , The GIMP toolkit (GTK+), and fontconfig-devel , for managing fonts on your desktop. While GTK+ was created for The GIMP, it s also used to develop GNOME applications.

KDE Software Development

If you re developing applications for the KDE desktop, you ll need to install the KDE Software Development package group. A couple of key packages include cups-devel , for the CUPS print server, and qt-devel , for the Qt language toolkit. Qt is the KDE version of the GTK+ toolkit, used to develop KDE applications.


Qt is a C++ language toolkit for creating GUI applications. Developed by TrollTech ( ), it is not related to QuickTime from Apple. In this case, Qt is not an acronym.

Package Group Categories

The comps.xml file organizes each package group into one of several categories. You ve seen how it works in Chapter 03 . The standard categories are described in Table 5.3.

Table 5.3: Package Group Categories




Allows the installation of a variety of package groups, including Graphical Internet, Editors, and Office Suites


Configures the installation of the X Window and GNOME and/or KDE Desktop environments


Permits you to add various development tool package groups


Lets you select from several different server package groups, including web, mail, and FTP services


Allows you to set up administrative or system tools and/or printing support

For example, the Desktops category, as shown below, includes the package groups that you may want or need to install the GUI on your computer:

 <category>       <name>Desktops</name>       <subcategories>         <subcategory>base-x</subcategory>         <subcategory>gnome-desktop</subcategory>         <subcategory>kde-desktop</subcategory>       </subcategories> </category> 

The Desktops category includes base-x , gnome-desktop , and kde-desktop . Based on their < id > variables (near the top of the comps.xml file), this corresponds to the following package groups: X Window System, GNOME Desktop Environment, and KDE Desktop Environment.


When there s a dependency, a software package (such as kernel source code) won t work unless a second package (such as a C language compiler) is installed. Dependencies are a substantial part of the comps.xml file. For example, the following stanza lists three dependencies for the XFree86-75dpi-fonts package:

 <package>     <name>XFree86-75dpi-fonts</name>     <dependencylist>       <dependency>bash</dependency>       <dependency>XFree86-font-utils</dependency>       <dependency>chkfontpath</dependency>     </dependencylist> </package> 

Normally, Red Hat Linux won t install the XFree86-75dpi-fonts package unless you re already installing the bash shell, the XFree86-font-utils package for installing fonts, and the chkfontpath package for configuring font directories.

Before Anaconda starts installing Red Hat Linux, it checks all dependencies. In this case, if you aren t already installing the dependent packages, Anaconda tries to select them for installation for you. You can then accept or reject Anaconda s selections.

Editing Examples

You can create your own package groups. For example, Netscape is no longer included in the Red Hat Linux CDs. But if you ve downloaded or created a Netscape RPM, you could include it in the /RedHat/RPMS directory for a network installation.

You could then create a Netscape group by adding the following commands:

 <group>      <id>netscape</id>     <name>Netscape Browser</name>     <description>This group is for Netscape.</description>     <uservisible>true</uservisible>     <default>false</default>     <packagelist>       <packagereq type="optional">netscape</packagereq>     </packagelist> </group> 

Those commands are enough to make Netscape an optional Package Group selection during the Red Hat Linux text-mode installation process. To make Netscape available during the graphical installation process, you need to include it in one of the group categories by inserting the following commands:

 <subcategories>    <subcategory>netscape</subcategory> </subcategories> 

Mastering Red Hat Linux 9
Building Tablet PC Applications (Pro-Developer)
ISBN: 078214179X
EAN: 2147483647
Year: 2005
Pages: 220 © 2008-2017.
If you may any questions please contact us: