Updating RPMs using binary deltas (demo)

Leonard den Ottolander leonard at den.ottolander.nl
Wed Jan 28 17:58:44 UTC 2004


Hello Alexandre,

> The fact that rpm uses minigzip makes it as suitable
> for rsyncing as for xdelta.

That is correct, I had realized that, and I have no objection against
somebody implementing this in rsync (I have considered this possibility
as a result of you letting me know about rsyncing ISOs). But I do not
share your objections that people would not have the original rpm lying
around (even if it were located on an NFS server, then that server would
most probably also be used to retrieve updates from, in which case the
patching would be done on that machine).

> But the rsync hashes are based only on
> the one (updated) binary rpm you're willing to distribute.  No
> assumption on what the base version was.

You might be correct that this would be a superior approach, but this
deltaing works already (it only needs some code to handle the
versioning, but it can already be used manually in it's crude current
form).

Plus I am afraid that this rsync hashing (or deltaing) might not work
efficiently on highly different versions of a software, ie release
updates. That should be tested. (Otoh, I believe it could be very
efficient on srpms (if the tar balls would be minigzipped instead of
gzipped that is).)

> > As I mentioned above, the "local tree" should contain the initial
rpm
> > for 99% of the users. No need to put any load on the servers.
> 
> Not necessarily true for the half dozen kernel updates we've had in
> FC1 since its release.

It would be save to assume that if people have the need to use these
deltas due to bandwidth limitations they are willing to keep the
original rpm lying around. And don't most people burn the original ISOs
to cd?

> kernel-sources is pretty big, and up2date -u
> replaces the installed files and then throws the .rpm file away.

Personally I only use up2date to check if updates are available, but I
assume that up2date can be taught to keep the rpm around (although that
is not really relevant if you assume the original/initial rpm to be used
as reference).

> The rsync protocol-based solution I'm proposing would reconstruct the
> rpm file from the installed files, and use that to save on the
> download.

Great! Yet another method for people to use instead of downloading the
whole rpm. Since the compression vs xdeltaing issue was obviously solved
without anybody noticing (apart from Michael) I don't see theoretical
problems in implementing this in rsync.

Bye,
Leonard.

-- 
mount -t life -o ro /dev/dna /genetic/research






More information about the fedora-devel-list mailing list