Alright so after trying to chase down the dependencies for various pieces of software for the n-th time and replicating work that various people do for all the different linux distributions I would like to know if there is a better way of bundling various pieces of software into one .rpm or .deb file for easier distribution.
My current set up for doing this is a frankenstein monster of various tools but mainly Vagrant and libguestfs (built from source running in Fedora because none of the distributions actually ship it with virt-diff). Here are the steps I currently follow:
- Spin up a base OS using either a Vagrant box or by create one from live CDs.
- Export the
.vmdkand call itbase-image. - Spin up an exact replica of the previous image and go to town: use the package manager,
or some other means, to download, compile, and install all the pieces that I need. Once again, export the
.vmdkand call itnon-base-image. - Make both base images available to the Fedora guest OS that has libguestfs.
- Use
virt-diffto diff the two images and dump that data to file calleddiff. - Run several ruby scripts to massage
diffinto another format that contains the information I need and none of the stuff I don't like things in/var. - Run another script to generate a command script for
guestfishwith a bunch ofcopy-outcommands. - Run the
guestfishscript. - Run another script to regenerate the symlinks from
diffbecauseguestfishcan't do it. - Turn the resulting folder structure into a .deb or .rpm file and ship it.
I would like to know if there is a better way to do this. You'd think there would be but I haven't figured it out.