If I have several versions of a package on an rpm -Fvh command line, there
are often conflicts or dependency problems reported between the older and
newer versions of the same package. rpm -F should first select the newest
version of each duplicate package from its command line and only then check
for conflicts and dependencies.
A common place for this to happen is when someone grabs the updates
directory from the Red Hat FTP server, which contains several versions of a
package, and does rpm -Fvh * in that directory.
Likewise, there should be a way for a package to say that it deprecates a
package of a different name. For example, php-4.0.1pl1 contains the
previous php package and the previous mod_php package, both of which are
also updates to the release php and therefore in the Red Hat updates
directory. php-4.0.1pl1 should be able to tell rpm that it obsoletes the
previous mod_php, even if the previous mod_php is on the same command line
(as it might be in the example above).
Even when all the older packages are removed, rpm still requires manually
installing some packages first. This was disappointing, since I went to the
trouble of writing a Perl program to move older packages to another directory.
For example, I had to install the mysql packages before I could install the php
packages; the dependencies should be sorted automatically.
rpm-4.1 handles duplicate packages on the
CLI, preferring the newest N-EVR (but not yet
AFAIK, Obsoletes: works as you've asked.
And, finally, if you install the rpmdb-redhat
package, rpm-4.1 will suggest the next level
of packages that need to be added to the command.
Not yet a full blown dependency solver, but progress