Upgrading a package (using the -U
option) is similar to installing one (the -i
option). If we have the RPM named tree-1.5.3.0-1.fc13.x86_64.rpm
in our current directory, and tree-1.5.2.2-4.fc13.x86_64.rpm
is already installed on our system (rpm -qi
will tell us which version of the tree
package we have installed on our system, if any), then the following command will upgrade tree to the newer version:
rpm -Uvh tree-1.5.3.0-1.fc13.x86_64.rpm
As part of upgrading a package, RPM automatically uninstalls any old versions of the foo
package. Note that -U
will also install a package even when there are no previous versions of the package installed.
Important
It is not advisable to use the -U
option for installing kernel packages because RPM completely replaces the previous kernel package. This does not affect a running system, but if the new kernel is unable to boot during your next restart, there would be no other kernel to boot instead.
Using the -i
option adds the kernel to your GRUB boot menu (/etc/grub.conf
). Similarly, removing an old, unneeded kernel removes the kernel from GRUB.
Because RPM performs intelligent upgrading of packages with configuration files, you may see one or the other of the following messages:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
This message means that changes you made to the configuration file may not be forward-compatible with the new configuration file in the package, so RPM saved your original file and installed a new one. You should investigate the differences between the two configuration files and resolve them as soon as possible, to ensure that your system continues to function properly.
Alternatively, RPM may save the package's new configuration file as, for example, foo.conf.rpmnew
, and leave the configuration file you modified untouched. You should still resolve any conflicts between your modified configuration file and the new one, usually by merging changes from the old one to the new one with a diff
program.
If you attempt to upgrade to a package with an older version number (that is, if a higher version of the package is already installed), the output is similar to the following:
package foo-2.0-1.fc13.x86_64.rpm (which is newer than foo-1.0-1) is already installed
To force RPM to upgrade anyway, use the --oldpackage
option:
rpm -Uvh --oldpackage foo-1.0-1.fc13.x86_64.rpm