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
Today’s modular x86 servers are compute-centric, designed as a least common denominator to support a wide range of IT workloads. Those generic, virtualized IT workloads have much different resource optimization requirements than hyperscale and cloud applications. They have resulted in a “one size fits all” enterprise IT architecture that is not optimized for a specific set of IT workloads, and especially not emerging hyperscale workloads, such as web applications, big data, and object storage. In this report, you will learn how shifting the focus from traditional compute-centric IT architectures to an innovative disaggregated fabric-based architecture can optimize and scale your data center.
Sponsored by AMD
Built-in forensics, incident response, and security with Red Hat Enterprise Linux 6
Every security policy provides guidance and requirements for ensuring adequate protection of information and data, as well as high-level technical and administrative security requirements for a system in a given environment. Traditionally, providing security for a system focuses on the confidentiality of the information on it. However, protecting the data integrity and system and data availability is just as important. For example, when processing United States intelligence information, there are three attributes that require protection: confidentiality, integrity, and availability.
Learn more about catching the bad guy in this free white paper.
Sponsored by DLT Solutions
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.
| 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 |
| Dart: a New Web Programming Experience | May 07, 2013 |
- New Products
- Making Linux and Android Get Along (It's Not as Hard as It Sounds)
- Drupal Is a Framework: Why Everyone Needs to Understand This
- A Topic for Discussion - Open Source Feature-Richness?
- Home, My Backup Data Center
- RSS Feeds
- What's the tweeting protocol?
- New Products
- Trying to Tame the Tablet
- Validate an E-Mail Address with PHP, the Right Way




1 hour 47 min ago
18 hours 35 min ago
21 hours 8 min ago
22 hours 25 min ago
23 hours 33 sec ago
23 hours 23 min ago
1 day 4 hours ago
1 day 4 hours ago
1 day 6 hours ago
1 day 8 hours ago