RPM Design Goals

The RPM Package Manager (RPM) is an open packaging system, 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 distributed under the terms of the GPL. The utility works only with
packages built for processing by the rpm package. 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.

Important

When installing a package, please ensure it is compatible with your operating system
and architecture. This can usually be determined by checking the package name.

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 logged in as root to install,
remove, or upgrade an RPM package.

To understand how to use RPM, it can be helpful to understand the design goals
of RPM:

Upgradability
With 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 is 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 RPM feature is the ability to verify packages. If you are
worried that you deleted an important file for some package, you can
verify the package. You are then notified of any anomalies, if any — at
which 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 is released, 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 seem important only for developers, but it results in higher qualitysoftware for end users, too.

Comments

Popular posts from this blog

A-Z Index of the Apple OS X command line

Archiving File Systems With ACLs

A-Z Index of the Linux BASH command line