Using the Red Hat Package Manager
One of the mundane yet necessary duties a system administrator faces is software management. Applications and patches come and go. After months or years of adding, upgrading and removing software applications, it's often hard to tell just what is on a system: the version of a software package and its dependent applications. Often, old files wind up lying around, because no one's quite sure anymore who owns them. Worse, you may install a new software package, only to find it has overwritten a crucial file from a currently installed package.
The Red Hat Package Manager (RPM) was designed to eliminate these problems. With RPM, software is managed in discrete “packages”--a collection of the files that make up the software, and instructions for adding, removing and upgrading those files. RPM also makes sure you never lose configuration files by backing up existing files before overwriting. RPM also tracks which version of an application is currently installed on your system. While named after Red Hat, the RPM system is also a part of Caldera OpenLinux, SuSE and all distributions based on Red Hat, such as Mandrake.
In the generic sense, a package is a container. It includes the files needed to accomplish a certain task, such as the binaries, configuration and documentation files in a software application. It also includes instructions on how and where these files should be installed and how the installation should be accomplished. A package also includes instructions on how to uninstall itself.
RPM packages are often identified by file name, which usually consists of the package name, version, release and the architecture for which it was built. For example, the package penguin-3.26.i386.rpm indicates this is the (fictional) Penguin Utilities package, version 3, release 26. i386 indicates it has been compiled for the Intel architecture. Note that although this is the conventional method of naming RPM packages, the actual package name, version and architecture information are read from the contents of the file by RPM, not the file name. You could rename the file blag.rpm, but it would still install as penguin-3.26.i386.rpm.
At the heart of RPM is the RPM database. This tracks where each file in a package is located, its version and much more. The RPM also maintains an MD5 checksum of each file. Checksums are used to determine whether a file has been modified, which comes in handy if you need to verify the integrity of one or more packages. The RPM database makes adding, removing and upgrading packages easy, because RPM knows which files to handle and where to put them. RPM also takes care of conflicts between packages. For example, if package X, which has already been installed, has a configuration file called /etc/someconfig and you attempt to install a new package Y, which wants to install the same file, RPM will manage this conflict by backing up your previous configuration file before the new file is written.
The workhorse of the RPM system is the program rpm. rpm is the “driver” responsible for maintaining the RPM databases. Of rpm's 10 modes of operation, I will cover the four most common: query, install, upgrade and remove.
One of the strengths of RPM is that, ideally, it accounts for every system or application file on your system. Using RPM's query mode, you can determine which packages are installed on your system or which files belong to a particular package. This can be a big help if you want to locate a file that belongs to a certain package. Query mode can also be used to identify which files are in an RPM file before you install it. This lets you see the files that are going to be installed on your system before they are actually written.
The -q switch is used to query packages. By itself, -q will give you the version of a specified package. If you want to see which version of the tin newsreader you have on your system, you would issue the following command:
# rpm -q tin tin-1.22-12
If you want to see which installed package owns a file, use the -f modifier. Here, we want to see which package owns /etc/passwd.
# rpm -q -f /etc/passwd setup-1.9.2-1Likewise, if you want to generate a list of files belonging to a certain package, use the -l modifier:
# rpm -q -l tin /usr/bin/rtin /usr/bin/tin /usr/doc/tin-1.22 /usr/doc/tin-1.22/CHANGES /usr/doc/tin-1.22/FTP /usr/doc/tin-1.22/HACKERS /usr/doc/tin-1.22/INSTALL /usr/doc/tin-1.22/INSTALL.NNTP /usr/doc/tin-1.22/MANIFEST /usr/doc/tin-1.22/README /usr/doc/tin-1.22/TODO /usr/man/man1/tin.1One of the most common modifiers to -q is -a, query all packages on your system. This system has 350 packages installed, but here's a truncated output:
# rpm -q -a setup-1.9.2-1 filesystem-1.3.2-3 basesystem-4.9-3 ldconfig-1.9.5-8 ... code_crusader-1.1.0-1 lyx-0.11.53-1 xforms-0.86-1 wine-981211-1Listing 1
For even more information about a package, use the -i (information) modifier:
# rpm -q -i passwd
Output is shown in Listing 1. Here's what some of the most important entries mean:
Name: the name of the package
Version: the version of the package
Release: the number of times this package has been released using the same version of the software
Install date: when this package was installed on your system
Group: your RPM database is divided into groups, which describe the functionality of the software. Each time you install a package, it will be grouped accordingly.
Size: the total size in bytes of all the files in the package
License: the license of the original software
# rpm -q -p glibc.rpm glibc-2.0.7-29
Free Webinar: Linux Backup and Recovery
Most companies incorporate backup procedures for critical data, which can be restored quickly if a loss occurs. However, fewer companies are prepared for catastrophic system failures, in which they lose all data, the entire operating system, applications, settings, patches and more, reducing their system(s) to “bare metal.” After all, before data can be restored to a system, there must be a system to restore it to.
In this one hour webinar, learn how to enhance your existing backup strategies for better disaster recovery preparedness using Storix System Backup Administrator (SBAdmin), a highly flexible bare-metal recovery solution for UNIX and Linux systems.
|Using Salt Stack and Vagrant for Drupal Development||May 20, 2013|
|Making Linux and Android Get Along (It's Not as Hard as It Sounds)||May 16, 2013|
|Drupal Is a Framework: Why Everyone Needs to Understand This||May 15, 2013|
|Home, My Backup Data Center||May 13, 2013|
|Non-Linux FOSS: Seashore||May 10, 2013|
|Trying to Tame the Tablet||May 08, 2013|
- RSS Feeds
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Using Salt Stack and Vagrant for Drupal Development
- New Products
- Validate an E-Mail Address with PHP, the Right Way
- Drupal Is a Framework: Why Everyone Needs to Understand This
- A Topic for Discussion - Open Source Feature-Richness?
- Download the Free Red Hat White Paper "Using an Open Source Framework to Catch the Bad Guy"
- Tech Tip: Really Simple HTTP Server with Python
- Home, My Backup Data Center
- Android is Linux -- why no better inter-operation
1 hour 5 min ago
- Connecting Android device to desktop Linux via USB
1 hour 33 min ago
- Find new cell phone and tablet pc
2 hours 31 min ago
4 hours 26 sec ago
- Automatically updating Guest Additions
5 hours 9 min ago
- I like your topic on android
5 hours 55 min ago
- Reply to comment | Linux Journal
6 hours 16 min ago
- This is the easiest tutorial
12 hours 31 min ago
- Ahh, the Koolaid.
18 hours 9 min ago
- git-annex assistant
1 day 9 min ago