6.1. The Basic YUM Process
Structurally, yum is built for RPM-based distributions. As noted in the yum HOWTO, available online from www.phy.duke.edu/~rgb/General/yum_HOWTO.php, yum uses "the same tools and python bindings" associated with Red Hat and other RPM distributions to install packages and automatically resolve dependencies.
Both yum and apt rely on package headers. The header for each package includes forward and reverse dependency information. With this information in a complete database, yum (as well as apt) can help you install the packages of your choice along with any packages required to satisfy dependencies. As suggested by the acronym, yum is a modified version of the original update command developed for Yellow Dog Linux.
Modifications are continuing as the Fedora Linux community focuses on yum to meet its update needs. New packages and commands have been developed to keep yum systems and repositories up to date.
6.1.1. Yellow Dog and yum
The original version of yum is known as yup, the Yellowdog Updater. While Yellow Dog Linux was developed for various versions of the Apple Macintosh (www.yellowdoglinux.com), it is based on the same code that you can find in Linux for all architectures. Yellow Dog Linux also organizes its packages in RPMs.
6.1.2. yup and yum
The yup command has weaknesses. It's slow because it downloads complete RPMs before it can read header information for dependencies. In its original form, it could not be configured to download packages from more than one repository. It is now essentially obsolete. Today, even Yellow Dog Linux uses yum for its own updates.
Several developers at Duke University wanted to create an open source update manager that would work with Red Hat. Many at Duke were already familiar with this distribution, as they're practically neighbors with the Red Hat developers in the Raleigh-Durham area of North Carolina. According to the yum home page at linux.duke.edu/projects/yum/, they wanted a tool that did not require custom servers for their networks. Out of this came the first tools and repositories associated with yum.
6.1.3. Repositories and Headers
One advantage of yum is that you can use it to configure repositories on standard FTP or HTTP servers. To maximize compatibility with Red Hat, the yum developers wrote their packages in the Python language, which Red Hat happens to use for its Anaconda as well as its up2date systems.
The other advantage is how the yum command relies on RPM headers. You'll learn the commands required to copy just the headers from a directory of RPMs in Chapter 7, "Setting Up a yum Repository." To make sure your repository supports yum, look for the headers/ or repodata/ subdirectories.
6.1.4. Required yum Packages
The yum system is compact. The binary yum RPM package is less than 200KB. It includes everything you need to manage patches and create a repository on your system: the yum and yum-arch commands. As you'll see in Chapter 7, Fedora Core 3/4 and later distributions substitute the createrepo RPM instead of the yum-arch command to help you configure a yum repository on your own network.
If you're running Red Hat or Fedora Linux and want to continue to use up2date as an update tool, you can modify the associated configuration files to acquire updates from yum repositories. Alternatively, if you're willing to learn the yum client commands, you'll never have to use up2date ever again.
It's unclear as of this writing, but SUSE may move toward yum-based repositories as well, possibly as soon as SUSE 10.1. Whether they use apt or yum repositories, they will likely use the Smart package manager (http://smartpm.org).