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). --jh--
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 arch scoring). 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 no less.