[Libguestfs] Rethinking appliance building

Richard W.M. Jones rjones at redhat.com
Sat Dec 4 23:43:32 UTC 2010


I spent the last couple of days rethinking how we go about building
the appliance, and the difficulties we have porting that to other
Linux distros.  I've come up with a much better way that works better
and faster on (so far) Fedora and Debian (probably on Ubuntu too, not
tried it), and should be much simpler to port to other distros.

The current way is to do:

+------------------+           +-----------------+
| febootstrap/     |           |                 |
| debootstrap      |           | extract list of |
| install packages |---------->| installed files |
| in a chroot      |           |                 |
+------------------+           +-----------------+
     ^                                 |
     |                                 |
     |                                 |
     |                                 V
+------------------+           +--------------------------+
|  list of         |           | calculate supermin       |
|  packages        |           | base image and hostfiles |
+------------------+           +--------------------------+

You might be able to see from the way I've drawn the diagram that
there is an obvious thing we've been missing:

  Go directly from the list of packages we want to install, to the
  supermin appliance base image and hostfiles.

In RPM terms, all we need to do is to "rpm -qlp" (find out what files
are in the RPMs).

+------------------+           +--------------------------+
|  list of         | ========> | calculate supermin       |
|  packages        |           | base image and hostfiles |
+------------------+           +--------------------------+

This completely eliminates fakeroot, fakechroot, {fe,de}bootstrap,
debirf from the equation, and means that we can support any packaging
system provided it supports some set of basic operations like
downloading packages and listing files from packages.

The details are more complex (only a little), but I have reimplemented
febootstrap as a general cross-distro supermin appliance building
tool, with working backends for YUM/RPM and Debian/APT/dpkg.

I'll be pushing patches to implement this over the next few days, so
everything will be in flux for a while.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://et.redhat.com/~rjones/libguestfs/
See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html




More information about the Libguestfs mailing list