Bundling .debs (in a .deb?)
Does anyone know of any existing tool which bundles a .deb package,
and its prerequisite packages, and its related debconf db deltas, into
a single archive? The resulting archive might be a tar.gz, zip, or
even another .deb...
It might be useful to think of this in terms of encapsulating the
results of a given 'apt-get install foo' or 'apt-get upgrade', so that
the same actions can be "replayed" later on similar machines. (For
reasons why you might want the same actions replayed on other machines
rather than whatever apt-get decides to do at some later point in
time, see http://www.infrastructures.org/papers/turing/turing.html.
Specifically, the technique described in section 188.8.131.52 just now blew
up on our machines when woody upgraded -- the available packages all
changed. We're running apt-proxy, but have multiple locations, and
the problem of keeping the apt-proxy caches consistent between
locations makes the machine builds too fragile, too dependent on
I'm in the middle of writing a bundling tool right now, but don't want
to re-invent the wheel. You'd use it like this:
apt-mkdeb install foo
[ ... answer debconf questions, if any ... ]
...this would create a 'foo-deb.deb' in the current directory.
This .deb contains all of the .deb's that would have been
installed by 'apt-get install foo' on the same machine. It also
contains the debconf db values that would have been set during
To replay on other machines, just install foo-deb.deb on them.
The postinstall script unpacks the debs and configures them,
One thing I'm having doubts about -- the correct storage and execution
of debconf values. I'm thinking about debconf-show to extract them
from the first machine and debconf-communicate to set them on
subsequent target machines. I don't want to just diff config.dat,
because I don't want to assume debconf db format or location. Is
there a better way?
Any votes for a better name than 'apt-mkdeb'? Any preferences for how
that 'foo-deb.deb' file should really be named, considering the fact
that it's particular to a machine and a point in time? Maybe
Speaker Coordinator, Silicon Valley Linux Users Group
UNIX/Linux Infrastructure Architect, TerraLuna LLC