Server consists of: rsync, cpio. - it should only have copies of the latest rpms on it. It does not need the other ones to create diffs, as that is done on the client. When server gets a request, it extracts the rpm, if not already extracted, into a temporary store. Then sets up an rsync server for the client. It also has a file with the md5sum’s of all the files, the pre and post scripts, and rpm info.
Client:
- compares rpm file database of md5sums against copy on server.
- copies files that are different into tempory spot
- rsyncs the modified files from the server to the client.
- gets the new pre and post scripts, updated md5sum list and info
- builds itself a new rpm based on the contents of the old one, plus the changed files.
- uninstalls the old rpm and installs the new one.
This should save significant bandwidth, be easy to implement, and use existing technology.