Debian delta packages

Florian Hackenberger f.hackenberger at chello.at
Sat Oct 14 11:18:42 BST 2006


Hi!

A major headache for most Ubuntu users is the size of packages upgrades, 
especially for those on traffic limited (aka most) broadband lines. Users on 
dial-up cannot update their system at all, because most packages are more 
than a few hundred kB in size. There is a (partial) solution to this problem: 
delta packages. Contrary to rpms there is no tool for generating delta 
packages for deb files (AFAIK). What about implementing support for delta 
packages for the Edgy Eft (+1, if it's too late for Edgy) release? It's 
pretty easy as I will show you.

First my testing results:
Tested 126 package upgrades (those packages I had in my local archive cache).
The overall download size of these packages is 121MB
Using xdelta3 (from http://xdelta.org) and the attached scripts for testing, I 
was able to save ~64MB of download volume. Thats over 52%! One extreme 
example: For the kernel update from 2.6.15-26.47 to 2.6.15-27.48 I had to 
download 21.7 MB. When we implement delta debian package support this update 
would be just 1.55 MB, which just 7% or the original size. Impressed? Well 
thank google for their great xdelta3 GPL code!

Problems:
1) gzip: When gzipping the same file twice, the result differs:
$ diff data.tar data.tar.patched
$
$ gzip data.tar data.tar.patched
$ diff data.tar.gz data.tar.patched.gz
Binary files data.tar.gz and data.tar.patched.gz differ
$
I just hope this does not break apt-get checksum verification.

2) xdelta3.h defines XD3_NODECOMPRESSSIZE, which defines the maximum size it 
will accept for files compressed in external formats. Some files like 
data.tar.gz of the linux-image are bigger than this size. Solutions:
* increase the constant
* decompress the files before using xdelta3

If you want to repeat my tests just download and compile xdelta3, place my 
scripts in the xdelta3 directory and do the following:
./find_double_debs.sh
./delta_script.sh

However, note that these scripts are just a quick hack and have at least one 
known bug (it uses only packages with exactly two versions available).

Please tell me what you think!

Regards,
	Florian

-- 
Florian Hackenberger
student @
University of Technology
Graz, Austria
florian at hackenberger.at
www.hackenberger.at
-------------- next part --------------
A non-text attachment was scrubbed...
Name: delta_script.sh
Type: application/x-shellscript
Size: 1295 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/ubuntu-devel/attachments/20061014/1c900d82/attachment.bin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: find_double_debs.sh
Type: application/x-shellscript
Size: 754 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/ubuntu-devel/attachments/20061014/1c900d82/attachment-0001.bin 


More information about the ubuntu-devel mailing list