ken wrote:
Okay, here's one. Maybe someone here can figure it out. Upgrading from 4.5 to 4.5. From a 4.6 ISO I copied all the RPMs into a directory... let's call it c:/install :). Now the oracle dba has strict parameters on what versions can be installed and which can't. The rpms in c:/install meet those requirements. In addition, since this is a production machine, it can be down at most for one day. So all I want to do is upgrade what's currently on the system. Moreover, if something horks, I want two chances to back out (the second being asking the backup guy to put the system back to yesterday). The command to do this would be
rpm --freshen --repackage *
run in that crazy c:/install directory (or what the redhat guy called, a "folder"). This command runs fine for one file which has no dependencies (i.e., change '*' to a specific rpm). It also upgrades three or four co-dependent rpms if they're narrowly specified. But if the file/rpm spec is '*', rpm complains about two missing dependencies and stops.
Yeah, this directory contains 1507 rpms (IIRC)... which is a lot, but it should still work. This is Linux, after all. And there's plenty enough memory and cpu to handle it.
Running
rpm --freshen --repackage *
for 1500+ rpms probably exceeds the maximum character length for some part of the system after expansion of the '*' by the shell.
Try breaking it up into smaller chunks (say two or three hundred at a time). You can match subsets of the files using shell expansions like
rpm --freshen --repackage [a-g]*
and tweak the line for any dependency complaints manually.
Alternatively, use 'createrepo' to create a Yum repository of the RPMs and use yum to handle it for you.