A more efficient up2date service using binary diffs
jdesbonnet at gmail.com
Thu Mar 10 08:14:45 UTC 2005
Here is my (draft) idea as to how to explore this further. The
advantage of this approach is that it can work as a separate 3rd party
add on software without any modification to the existing software. I
have to confess I'm currently not very familiar with the inner
workings of up2date, apt, yum etc, so maybe there are gotchas here I
havn't thought about.
A RPM repository proxy server runs on the local computer. This proxy
server will be configured with the following information:
* Location of locally stored RPMs (/var/spool/up2date, copies of
install CDs etc)
* Location of online RPM repositories
* Location of RPM diff/delta reposities
Yum/up2date/apt is configured to point to this local server as the repository.
When the proxy server receives a request for a RPM, it checks the diff
repository and obtains a list of diffs that apply to that RPM. It then
checks the local cache to see what RPMs are available. If there is a
suitable match, the downloads the diff, applies the patch, checks the
integrity of the resulting RPM and passes the RPM back to the calling
software (yum/up2date whatever).
If no diff is found, it just downloads the RPM and passes it on directly.
A copy of any new RPM (obtained by diff or by whole) is keep in a
cache for possible use later.
Obviously a separate project is to produce a tool that can
automatically crunch a diff/delta repository out of a standard RPM
Any flaws in this idea? If not I'll consider taking it on.
More information about the devel