debian binary package update system
OK, so here's my take on the whole binary diff update thing. I've been
working on something similar sorta off and on for the past few months,
and I finally wrote up a README and tarred it up. So if you want to
check it out, grab it at:
I'm aware of Kai's B.U.P.S project, but haven't compared it with my
Anyway, I'd like people to test it out, tell me how I'm screwing up
while pretending to be dpkg, etc. I've included the README here.
dpkg-xd is an debian package updater that uses binary diffs made by xdelta
to upgrade a package in-place on the system.
There are two perl scripts: create and patch, and a perl module with
a library of common functions. create takes two deb packages, and makes an
"xdeb", an archive with the information needed to reconstruct the new deb
on a system with the old deb installed. patch actually does the
# ./create foo_0.1.deb foo_0.2.deb
# ./patch foo_0.1-to-0.2.xdeb
1) These scripts require an xdelta that supports the -p option, so it
doesn't take apart gzipped files. The rationale behind it is that we
want an exact replica of the new package, with proper md5sums so that
the md5sum records are kept sane. Also some programs may sanity check
their own files, so we don't want to break those. (Admittedly, I may
be being over-paranoid, so someone is free to convince me otherwise. :)
There would be some space savings by working on uncompressed versions
The xdelta.patch that comes with this will add that support to 1.0.0.
This feature will be in the next release of xdelta.
2) create needs to be run as root or fakerooted, for the same reasons deb
packages need to be built under the same circumstances.
3) THIS IS TEST CODE. It probably has bugs. It may completely toast your
system. You have been warned.
That being said, comments, patches, etc. are welcome.
Manish Singh <firstname.lastname@example.org>