An RPM contains the binary, configuration, and documentation for an application. It also contains information about what it depends on and what it provides to the system (so that other packages can depend on the RPM you are dealing with if needed). Whereas with source code you have to resolve and figure out any dependencies that are needed, the RPM contains all of this information for you in the package itself.
When you install SUSE, a large number of RPM files are installed with the software you have selected. These RPMs may rely on other RPMs for functionality and so on. The process of controlling dependencies is handled by YaST automatically. For example, if you want to install Fire-fox, YaST knows from the RPM file that Firefox depends on the X libraries, among others. YaST creates a dependency tree for RPMs that need to be installed and resolves any dependency needs as well as any conflicts.
This feature of YaST is something that proves extremely useful because it means that the user does not need to resolve package dependencies manually when installing software.
The command-line tools rug (on SLES and SLED 10) and zypper for openSUSE and newer enterprise versions also have the ability to resolve and fetch dependencies when necessary.
RPM manages packages directly, installing, querying, and building RPMs. YaST, on the other hand, takes the features of RPM and builds an installer system around it. YaST will resolve dependencies, give you information about the packages, and enable you to search all SUSE packages on the media to find what you need to install.
Dependencies are an important part of the RPM process. The fact that the RPM system manages dependencies takes away the cumbersome and sometimes difficult process of manually resolving dependencies of the source code.
Was this article helpful?