To Summarize…

RPM's dependency processing is based on tracking the capabilities a package provides, and the capabilities a package requires. A package's requirements can come from two places:

  1. Shared library requirements, automatically determined by RPM.

  2. The requires tag line, manually added to the package's spec file.

These requirements can be viewed by using RPM's --requires query option. A specific requirement can be viewed by using the --whatrequires query option. Both options are fully described in Chapter 5.

The capabilities a package provides, can come from three places:

  1. Shared library sonames, automatically determined by RPM.

  2. The provides tag line, manually added to the package's spec file.

  3. The package's name (and optionally, version/serial number).

The first two types of information can be viewed by using RPM's --provides query option. A specific capability can be viewed by using the --whatprovides query option. Both options are fully described in Chapter 5.

The package name and version are not considered capabilities that are explicitly provided. Therefore, if a search using --provides or --whatprovides comes up dry, try simply looking for a package by that name.

As you've probably gathered by now, using manual dependencies requires some level of synchronization between packages. This can be tricky, particularly if you're not responsible for both packages. But RPM's dependency processing can make life easier for your users.