16.2 Managing Packages: Install, Update, and Uninstall
Normally, the installation of an RPM archive is quite simple:
rpm -i package.rpm. With this
command, the package is installed, but only if its dependencies are fulfilled
and there are no conflicts with other packages. With an error message,
rpm requests those packages that need to be installed to
meet dependency requirements. In the background, the RPM database ensures that
no conflicts arise—a specific file can only belong to one package. By
choosing different options, you can force rpm to ignore
these defaults, but this is only for experts. Otherwise, risk compromising the
integrity of the system and possibly jeopardize the ability to update the
system.
The options -U or --upgrade and
-F or --freshen can be used to update a
package, for example,
rpm -F package.rpm.
This command removes the files of the old version and immediately
installs the new files. The difference between the two versions is that
-U installs packages that previously did not exist in the
system, but -F merely updates previously installed
packages. When updating, rpm updates configuration files
carefully using the following strategy:
-
If a configuration file was not changed by the system administrator,
rpm installs the new version of the appropriate
file. No action by the system administrator is required.
-
If a configuration file was changed by the system administrator
before the update, rpm saves the changed file with
the extension .rpmorig or
.rpmsave (backup file) and installs the version from
the new package, but only if the originally installed file and the newer
version are different. If this is the case, compare the backup file
(.rpmorig or .rpmsave) with the
newly installed file and make your changes again in the new file.
Afterwards, be sure to delete all .rpmorig and
.rpmsave files to avoid problems with future
updates.
-
.rpmnew files appear if the configuration file
already exists and if the
noreplace label was specified in the
.spec file.
Following an update, .rpmsave and
.rpmnew files should be removed after comparing them,
so they do not obstruct future updates. The .rpmorig
extension is assigned if the file has not previously been recognized by the
RPM database.
Otherwise, .rpmsave is used. In other words,
.rpmorig results from updating from a foreign format to
RPM. .rpmsave results from updating from an older RPM
to a newer RPM. .rpmnew does not disclose any
information as to whether the system administrator has made any changes to
the configuration file. A list of these files is available in
/var/adm/rpmconfigcheck. Some configuration files (like
/etc/httpd/httpd.conf) are not overwritten to allow
continued operation.
The -U switch is not just an
equivalent to uninstalling with the -e option and
installing with the -i option. Use -U
whenever possible.
To remove a package, enter rpm -e
package. rpm
only deletes the package if there are no unresolved dependencies. It is
theoretically impossible to delete Tcl/Tk, for example, as long as another
application requires it. Even in this case, RPM calls for assistance from
the database. If such a deletion is—for whatever reason and under
unusual circumstances—impossible, even if no
additional dependencies exist, it may be helpful to rebuild the RPM database
using the option --rebuilddb.