According to the man page rpm --freshen should upgrade only packages for which an earlier version currently exists. > rpm -q hal hal-0.2.98.cvs20040923-1.x86_64 > rpm --freshen hal-0.2.98.cvs20040927-1.x86_64.rpm hal-0.2.98.cvs20040927-1.i386.rpm error: Failed dependencies: libcap.so.1 is needed by hal-0.2.98.cvs20040927-1 libdbus-1.so.0 is needed by hal-0.2.98.cvs20040927-1 libdbus-glib-1.so.0 is needed by hal-0.2.98.cvs20040927-1 > rpm --freshen hal-0.2.98.cvs20040927-1.x86_64.rpm > rpm -q firefox firefox-0.10.0-1.0PR1.1.i386 > rpm --freshen firefox-0.10.0-1.0PR1.3.i386.rpm firefox-0.10.0-1.0PR1.3.x86_64.rpm > rpm -q firefox firefox-0.10.0-1.0PR1.3.i386 firefox-0.10.0-1.0PR1.3.x86_64
Yup. Freshen looks only at newer packages, that's the way it is defined, that's the way it is gomg to stay in the interest of "satbility". Write a wrapper script, choose the packages you want by whatever means you want, then invoke rpm with the given package list. The rationale for a wrapper is that rpm supplies mechanism, not policy. Use yum/up2date or equivalent if you want to define an install/upgrade/erase policy.