Compressing packages with bzip2 instead gzip?

Paul Sladen ubuntu at paul.sladen.org
Thu Jan 19 08:11:10 GMT 2006


On Wed, 18 Jan 2006, Phillip Susi wrote:
> Rather than generate the .zsync file against the .deb, it would be 
> generated against the uncompressed .tars inside the deb.

Yes.

> would require the server to either store the decompressed tars,

Incorrect.  A 'Zmap' is used, mapping uncompressed file-offsets to their
position in the compressed stream.  If you need byte X then you download the
compressed block from the previous restart marker to the next
restart-marker.

This is like on a hard-disk, if you need byte 813 you actually fetch the
whole of the second sector (512bytes) on the hard-disk.

By repacking the gzip you can add more restart-markers, lowing the
compression ratio, but increasing the frequency and granularity of the
restart-markers.  This makes the "sector size" smaller.

> Disassembling and reassembling the debs shouldn't be very difficult, and 
> zsync should work very well on the decompressed tars.

I think I'll just hack zsync to extend the Zmap table to support linear
mappings, and possibly bzip2 mappings, aswell.  It maybe be possible to
'trick' the existing decoder into doing a straight copy for the linear part
by letting it try to compress the stream, file to get the correct checksum
and resort to downloading raw instead.  A deb would look like:

  linear mapping (ar header, control.tar.gz, data.tar header)
  gzip mapping (data.tar)
  linear mapping (ar tail)

	-Paul
-- 
This country is covered in white fluffy snow.  Helsinki, FI






More information about the ubuntu-devel mailing list