I. RPM and Computer Users — How to Use RPM to Effectively Manage Your Computer

Table of Contents
1. An Introduction to Package Management
1.1. What are Packages, and Why Manage Them?
1.1.1. Enter the Package
1.1.2. Manage Your Packages, or They Will Manage You
1.2. Package Management: How to Do It?
1.2.1. Ancestors of RPM
1.3. RPM Design Goals
1.3.1. Make it easy to get packages on and off the system
1.3.2. Make it easy to verify a package was installed correctly
1.3.3. Make it easy for the package builder
1.3.4. Make it start with the original source code
1.3.5. Make it work on different computer architectures
1.4. What's in a package?
1.4.1. RPM's Package Labels
1.4.2. Labels And Names: Similar, But Distinct
1.4.3. Package-wide Information
1.4.4. Per-file Information
1.5. Let's Get Started
2. Using RPM to Install Packages
2.1. rpm -i — What does it do?
2.1.1. Performing dependency checks:
2.1.2. Checking for conflicts:
2.1.3. Performing any tasks required before the install:
2.1.4. Deciding what to do with config files:
2.1.5. Unpacking files from the package and putting them in the proper place:
2.1.6. Performing any tasks required after the install:
2.1.7. Keeping track of what it did:
2.2. Performing an Install
2.2.1. URLs — Another Way to Specify Package Files
2.2.2. A warning message you might never see
2.3. Two handy options
2.3.1. Getting a bit more feedback with -v
2.3.2. -h: Perfect for the Impatient
2.4. Additional options to rpm -i
2.4.1. Getting a lot more information with -vv
2.4.2. --test: Perform Installation Tests Only
2.4.3. --replacepkgs: Install the Package Even If Already Installed
2.4.4. --replacefiles: Install the Package Even If It Replaces Another Package's Files
2.4.5. --nodeps: Do Not Check Dependencies Before Installing Package
2.4.6. --force: The Big Hammer
2.4.7. --excludedocs: Do Not Install Documentation For This Package
2.4.8. --includedocs: Install Documentation For This Package
2.4.9. --prefix <path>: Relocate the package to <path>, if possible
2.4.10. --noscripts: Do Not Execute Pre- and Post-install Scripts
2.4.11. --percent: Not Meant for Human Consumption
2.4.12. --rcfile <rcfile>: Use <rcfile> As An Alternate rpmrc File
2.4.13. --root <path>: Use <path> As An Alternate Root
2.4.14. --dbpath <path>: Use <path> To Find RPM Database
2.4.15. --ftpport <port>: Use <port> In FTP-based Installs
2.4.16. --ftpproxy <host>: Use <host> As Proxy In FTP-based Installs
2.4.17. --ignorearch: Do Not Verify Package Architecture
2.4.18. --ignoreos: Do Not Verify Package Operating System
3. Using RPM to Erase Packages
3.1. rpm -e — What Does it Do?
3.2. Erasing a Package
3.2.1. Getting More Information With -vv
3.3. Additional Options
3.3.1. --test — Go Through the Process of Erasing the Package, But Do Not Erase It
3.3.2. --nodeps: Do Not Check Dependencies Before Erasing Package
3.3.3. --noscripts — Do Not Execute Pre- and Post-uninstall Scripts
3.3.4. --rcfile <rcfile> — Read <rcfile> For RPM Defaults
3.3.5. --root <path> — Use <path> As the Root
3.3.6. --dbpath <path>: Use <path> To Find RPM Database
3.4. rpm -e and Config files
3.5. Watch Out!
4. Using RPM to Upgrade Packages
4.1. rpm -U — What Does it Do?
4.1.1. Config file magic
4.2. Upgrading a Package
4.2.1. rpm -U's Dirty Little Secret
4.3. They're Nearly Identical…
4.3.1. --oldpackage: Upgrade To An Older Version
4.3.2. --force: The Big Hammer
4.3.3. --noscripts: Do Not Execute Install and Uninstall Scripts
5. Getting Information About Packages
5.1. rpm -q — What does it do?
5.2. The Parts of an RPM Query
5.2.1. Query Commands, Part One: Package Selection
5.2.2. Query Commands, Part Two: Information Selection
5.2.3. Getting a lot more information with -vv
5.2.4. --root <path>: Use <path> As An Alternate Root
5.2.5. --rcfile <rcfile>: Use <rcfile> As An Alternate rpmrc File
5.2.6. --dbpath <path>: Use <path> To Find RPM Database
5.3. A Few Handy Queries
5.3.1. Finding Config Files Based on a Program Name
5.3.2. Learning More About an Uninstalled Package
5.3.3. Finding Documentation for a Specific Package
5.3.4. Finding Similar Packages
5.3.5. Finding Recently Installed Packages, Part I
5.3.6. Finding Recently Installed Packages, Part II
5.3.7. Finding the Largest Installed Packages
6. Using RPM to Verify Installed Packages
6.1. rpm -V — What Does it Do?
6.1.1. What Does it Verify?
6.2. When Verification Fails — rpm -V Output
6.2.1. Other Verification Failure Messages
6.3. Selecting What to Verify, and How
6.3.1. The Package Label — Verify an Installed Package Against the RPM Database
6.3.2. -a — Verify All Installed Packages Against the RPM Database
6.3.3. -f <file> — Verify the Package Owning <file> Against the RPM Database
6.3.4. -p <file> — Verify Against a Specific Package File
6.3.5. -g <group> — Verify Packages Belonging To <group>
6.3.6. --nodeps: Do Not Check Dependencies During Verification
6.3.7. --noscripts: Do Not Execute Verification Script
6.3.8. --nofiles: Do Not Verify File Attributes
6.3.9. -v — Display Additional Information
6.3.10. -vv — Display Debugging Information
6.3.11. --dbpath <path>: Use <path> To Find RPM Database
6.3.12. --root <path>: Set Alternate Root to <path>
6.3.13. --rcfile <rcfile>: Set Alternate rpmrc file to <rcfile>
6.4. We've Lied to You…
6.4.1. RPM Controls What Gets Verified
7. Using RPM to Verify Package Files
7.1. rpm -K — What Does it Do?
7.1.1. Pretty Good Privacy: RPM's Assistant
7.2. Configuring PGP for rpm -K
7.3. Using rpm -K
7.3.1. -v — Display Additional Information
7.3.2. When the Package is Not Signed
7.3.3. When You Are Missing the Correct Public Key
7.3.4. When a Package Just Doesn't Verify
7.3.5. --nopgp — Do Not Verify Any PGP Signatures
7.3.6. -vv — Display Debugging Information
7.3.7. --rcfile <rcfile>: Use <rcfile> As An Alternate rpmrc File
8. Miscellania
8.1. Other RPM Options
8.1.1. --rebuilddb — Rebuild RPM database
8.1.2. --initdb — Create a New RPM Database
8.1.3. --quiet — Produce as little output as possible
8.1.4. --help — Display a help message
8.1.5. --version — Display the current RPM version
8.2. Using rpm2cpio
8.2.1. rpm2cpio — What does it do?
8.2.2. A more real-world example — Listing the files in a package file
8.2.3. Extracting one or more files from a package file
8.3. Source Package Files and How To Use Them
8.3.1. A gentle introduction to source code
8.3.2. Do you really need more information than this?
8.3.3. So what can I do with it?
8.3.4. Stick with us!