First, let me state some of the philosophy behind RPM. One design goal
was to allow the use of "pristine" sources. With RPP (our former
packaging system of which none of RPM is derived),
our source packages were the "hacked" sources that we built from.
Theoretically, one could install a source RPP and then
make it with no problems. But the sources were not
the original ones, and there was no reference as to what changes we had to
make to get it to build. One had to download the pristine sources
separately. With RPM, you have the pristine sources along with patches
that we used to compile from. We see this as a big advantage. Why?
Several reasons. For one, if a new version of a program comes out, you
don't necessarily have to start from scratch to get it to compile under
RHL. You can look at the patch to see what you might
need to do. All the compile-in defaults are easily visible this way.
RPM is also designed to have powerful querying options. You can do
searches through your entire database for packages or just certain files.
You can also easily find out what package a file belongs to and where it
came from. The RPM files themselves are compressed archives, but you can
query individual packages easily and quickly because
of a custom binary header added to the package with everything you could
possibly need to know contained in uncompressed form. This allows for
fast querying.
Another powerful feature is the ability to verify packages. If you are
worried that you deleted an important file for some package, just verify
it. You will be notified of any anomalies. At that point, you can
reinstall the package if necessary. Any config files that you had are
preserved as well.
We would like to thank the folks from the BOGUS distribution for many of
their ideas and concepts that are included in RPM. While RPM was
completely written by Red Hat, Inc., its operation is based on code
written by BOGUS (PM and PMS).