[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: debian binary diff system ?!



On Sat, Nov 14, 1998 at 02:05:24PM +0100, Kai Duebbert wrote:
> Hi.
> 
> I was wondering if anybody is working on something like making binary diff
> updates possible with debian!? It always bugs me again, when I have to download
> a whole package (and pay the German telephone fees...), although just something
> in the documentation or so is changed. and i like to have an up-to-date system.

This would be VERY useful.

> If nobody is working on that, did you already discuss something like this
> before? How do others think about this? Anybody interested to work on this?
> 
> The system I thought of is the following.
> 
> on a debian server:
> 
> 1. create a new directory in each directory (e.g. base/diffs,
> devel/diffs).... Maybe something else. 

or use dists/unstable/main/binary-i386-diffs/base/...?

> 2. Have a script running (on the server), that always when
> a new package arrives extracts it, puts the debian control files etc. in the
> new diff, compares (e.g. with xdelta) the binary files of the version before to
> the new version and puts the generated .xd files in the new diff as well.

The best way to do it would be to unpack the data.tar.gz,
and do an xdelta on the individual files. Also do a "diff" on the
date/time/permissions/owner of the files. control.tar.gz is so small
you might as well copy it verbatim.

> 3. the new package stays in the normal directory, the old one gets deleted
> (just like on the normal debian server) and e.g. the oldest diff file, so there
> are about 3 (or more?) diffs in the diff directory.

How about we keep a set of diffs going up from the current "stable"
version of any package. That way, you keep the version in "stable"
(eg on CD), and these diffs. For packages only in unstable, set of diffs
only applies to last 3 versions.

> on the client system:
> 
> 1. dselect (or the new apt?) gets the up-to-date packages list of the server.
> 
> 2. user (who uses the new "diff-method") just selects what packages he wants to
> update as usual and goes on [install]
> 
> 3. before connecting to the server, "diff-method" examines what packages are
> wanted. 
> 	+ if the new to install package is a new upstream version (not just an
> 	   new internal maintainer version), it decides to get the
> 	  whole package (or not??).
>  	+ if the new to install package is an internal
> 	  maintainer version, it checks how old the installed package
> 	  is and if its not older than 3 (or more?) versions, it
> 	  decides to get the diff files it needs to  update the local
> 	  binaries to the newest version, otherwise if the installed
>                 version is too old to be updated by diff, it gets the
> 	  whole package new. 	
> 	+ user can tell if he wants the whole package not the diffs 	
> 	+ maintainers can mark certain important packages to be downloaded as 
> 	  whole packages only (e.g. glibc etc.)

Why not just take the smallest route, doing a straight size compare of
which needs less bandwidth, but with user override?

> advantages:
> - reduces the costs
> - reduces bandwidth usage

This is advantageous for both users AND debian (less bandwidth
used by debian servers).

> - easy to have an always up-to-date system (good for security reasons?)
> - no manpower for administration needed (well, hopefully....)
> - package maintainers dont have to worry if they are just changing a typo in
> the changelog...... ;) 
> - could also be done for other systems (rpm, slp, etc.)
> - wouldnt interfere with the other methods and servers could decide if they
> want this system or not
> - only advantages for user

Also, very good for keeping up-to-date from "stable" (MUCH less
bandwidth needed), or in general updating a CD over the net.

And for developers with expensive phone companies - all packages
can be compiled against more up-to-date versions more easily.

> disadvantages:
> - more diskspace usage on debian servers
> - more cpu usage on debian servers
> - ?
> 
> ideas are welcome. any objections? please give feedback as I want to start it
> quite soon, if nothing important stands against it.

Please consider a program to do both of the following:-

1. Apply diffs "inplace"
2. Apply diffs against a .deb file.

Not just one.

-- 
Tom Lees <tom@lpsg.demon.co.uk> <tom@debian.org>  http://www.lpsg.demon.co.uk/
PGP Key: finger tom@master.debian.org, http://www.lpsg.demon.co.uk/pgpkeys.asc.


Reply to: