On 15/01/2008, William Case wrote: > Hi; > > I have a curiosity question about yum. Does anyone know of a site or > manual that explains how yum works? I am not asking a 'man' question. > I use 'man yum' all the time. I am looking for an explanation that is > somewhere between 'man' or 'info' and source code. > > I have tried Wikipedia and http://wiki.linux.duke.edu/YumFaq (and > friends). > > I have used almost all of the various commands and utilities yum has to > offer, but would like to understand what is happening at some more basic > level that doesn't involve diving into source code. > > Any suggestions? Hoping some one else has been there and done that, and > can give me a quick tip or some search criteria. If memory serves correctly, Seth Vidal has given at least one talk about Yum at one of the FUDCons. Perhaps with some searching you can locate the slides (if any) in some archive. Your question is quite vague. It doesn't become clear what level of detail you are interested in. The interaction between Yum, package metadata and RPM should be fairly obvious. Yum accesses local or remote repositories, which usually are normal http/ftp servers that contain RPM packages plus the corresponding metadata archives generated by the createrepo tool. The metadata describe the available packages beyond the information available in the filenames and without the need to download full packages. Basically, many data from a file's RPM package header (such as name, epoch, version, release, arch, excludearch and exlusivearch lists, dependency details, package capabilities, virtual package names, library SONAMEs, obsoletes, conflict definitions, but also filelists) are copied into the metadata archives, but in a format that is more convenient and faster to parse, e.g. xml or sqlite files. Having learned what packages are available in the repositories, Yum queries the local RPM database to examine what packages are installed already. Combining the information it is able to determine what newer packages are available as updates which is Yum's primary purpose. Since updates can also replace other packages or require new packages to be added, there's quite some time spent on processing and resolving lots of package metadata. For any packages to be installed, it either downloads them via the network or accesses them locally. It then uses the RPM library to examine a transaction set of packages further in order to find out whether there are any dependency problems or conflicts before asking RPM to perform a transaction. That's only a very brief coverage of what Yum does.