A more efficient up2date service using binary diffs

Joe Desbonnet joe at galway.net
Thu Mar 3 18:54:39 UTC 2005


The 'up2date' is a great service, but serveral months after a core 
release, the bandwidth required to update a freshly installed machine is 
almost as much as that required to install in the first place.

I did a quick experiment: Using the bsdiff binary diff utility (see 
http://www.daemonology.net/bsdiff/) I compared  
kernel-2.6.9-1.667.i586.rpm  in the FC3/i386 distibution with 
kernel-2.6.10-1.737_FC3.i586.rpm in the updates. I converted the RPM to 
a cpio archive with the rpm2cpio utility before running bsdiff.

The resulting diff file was  6.2MB in size (compared to 16MB for the 
entire RPM).

I also checked  openoffice.org-i18n-1.1.2-10.i386.rpm in the FC3/i386 
distribution with
openoffice.org-i18n-1.1.2-11.5.fc3.i386.rpm in the updates.

The resulting diff file [*] was 1MB (compared to 166MB for the RPM)!

Has anyone thought about improving the up2date service by offering diff 
files in addition to the .rpm files?

Joe.

[*]
(This comparison was more tricky as I didn't have enough RAM to perform 
the diff directly. Instead I had to split the files into smaller chunks 
and do a separate diff on each chunk. I guess you would need almost 2GB 
of RAM to use bsdiff on the OpenOffice RPMs directly. However this 
memory requirement is for generation of the diff. The patch utility does 
not require much memory).




More information about the devel mailing list