|
|
|
|
NOTE: CentOS Enterprise Linux is built from the Red Hat Enterprise Linux source code. Other than logo and name changes CentOS Enterprise Linux is compatible with the equivalent Red Hat version. This document applies equally to both Red Hat and CentOS Enterprise Linux.
Chapter 15. Package Management with
RPM
The RPM Package Manager (RPM) is an open packaging system,
available for anyone to use, which runs on Red Hat Enterprise Linux
as well as other Linux and UNIX systems. Red Hat, Inc. encourages
other vendors to use RPM for their own products. RPM is
distributable under the terms of the GPL.
For the end user, RPM makes system updates easy. Installing,
uninstalling, and upgrading RPM packages can be accomplished with
short commands. RPM maintains a database of installed packages and
their files, so you can invoke powerful queries and verifications
on your system. If you prefer a graphical interface, you can use
the Package Management Tool to perform
many RPM commands. Refer to Chapter
16 Package Management Tool
for details.
During upgrades, RPM handles configuration files carefully, so
that you never lose your customizations — something that you
cannot accomplish with regular .tar.gz
files.
For the developer, RPM allows you to take software source code
and package it into source and binary packages for end users. This
process is quite simple and is driven from a single file and
optional patches that you create. This clear delineation between
pristine sources and your patches along
with build instructions eases the maintenance of the package as new
versions of the software are released.
|
Note |
|
Because RPM makes changes to your system, you must be root to
install, remove, or upgrade an RPM package.
|
To understand how to use RPM, it can be helpful to understand
RPM's design goals:
- Upgradability
-
Using RPM, you can upgrade individual components of your system
without completely reinstalling. When you get a new release of an
operating system based on RPM (such as Red Hat Enterprise Linux),
you do not need to reinstall on your machine (as you do with
operating systems based on other packaging systems). RPM allows
intelligent, fully-automated, in-place upgrades of your system.
Configuration files in packages are preserved across upgrades, so
you do not lose your customizations. There are no special upgrade
files needed to upgrade a package because the same RPM file is used
to install and upgrade the package on your system.
- Powerful Querying
-
RPM is designed to provide powerful querying options. You can do
searches through your entire database for packages or just for
certain files. You can also easily find out what package a file
belongs to and from where the package came. The files an RPM
package contains are in a compressed archive, with a custom binary
header containing useful information about the package and its
contents, allowing you to query individual packages quickly and
easily.
- System Verification
-
Another powerful feature is the ability to verify packages. If
you are worried that you deleted an important file for some
package, verify the package. You are notified of any anomalies. At
that point, you can reinstall the package if necessary. Any
configuration files that you modified are preserved during
reinstallation.
- Pristine Sources
-
A crucial design goal was to allow the use of "pristine"
software sources, as distributed by the original authors of the
software. With RPM, you have the pristine sources along with any
patches that were used, plus complete build instructions. This is
an important advantage for several reasons. For instance, if a new
version of a program comes out, you do not necessarily have to
start from scratch to get it to compile. You can look at the patch
to see what you might need to do. All the
compiled-in defaults, and all of the changes that were made to get
the software to build properly, are easily visible using this
technique.
The goal of keeping sources pristine may only seem important for
developers, but it results in higher quality software for end
users, too.
|
|
|