Suppose these packages are installed: foo-1.3.0-5 bar-2.7.1-16 and I have RPMs for foo, bar, and baz, and run this command: rpm -U foo-1.3.0-5.i386.rpm bar-2.7.1-16.i386.rpm \ baz-1.5.2-2.i386.rpm rpm will complain about foo and bar: package foo-1.3.0-5 is already installed package bar-2.7.1-16 is already installed but rpm seems to *ignore* baz entirely. rpm --install with the same files behaves the same. The application is this: I have a central directory of RPMs that lots of Red Hat machines must have; some of these are new packages, others are updated versions of currently-installed packages. I need to have a job run automatically to install and update newer versions.
Created attachment 6231 [details] List of packages which I am attempting to upgrade or install
Created attachment 6232 [details] Output of "rpm -qa" before/after "rpm -U ..."
Created attachment 6233 [details] /var/lib/rpm from an example system that ignores the package
Created attachment 6234 [details] stdout+stderr output of "rpm -vv -U ..." attempting to upgrade; note that it says "found 17 packages" at the top, but only reports on 16 files at the bottom
Note that in the particular case documented in the attachments, I'm trying to install the package mtx-1.2.7-3
This is transaction set behavior, either all the packages are installed, or none. You want to use --freshen (aka -F) rather than -U, as that will filter uninstalled and older packages from the package list before attempting the upgrade.