I finally have it working! I should have thought of using yumdownloader myself - thanks for that. The other missing piece was needing a supermin appliance binary (guestfs seemed to be trying to use /usr/bin/supermin5 which isn't present for me, and I couldn't work out how to get it to use $PWD/usr/bin/supermin5).

Full steps I ended up using:

yumdownloader --resolve libguestfs libguestfs-tools-c
for rpm in *.rpm; do
    rpm2cpio "$rpm" | cpio -idmv
done
curl https://download.libguestfs.org/binaries/appliance/appliance-1.40.1.tar.xz -OL
tar -xf  appliance-1.40.1.tar.xz
LIBGUESTFS_PATH="$PWD/appliance" LD_LIBRARY_PATH="$PWD/usr/lib64" ./usr/bin/virt-cat -a centos7.qcow2 /root/.bashrc

>> Take a look at m4/guestfs-libraries.m4 and change the AC_CHECK_LIB to PKG_CHECK_MODULES, following examples of other package tests in that file
> Do you have a patch for this one?

I've created https://github.com/libguestfs/libguestfs/pull/66 with some discussion on the two cases - feel free to edit/decline as you see fit.

Thanks,
Lewis

On Sun, 2 May 2021 at 14:49, Richard W.M. Jones <rjones@redhat.com> wrote:
On Sun, May 02, 2021 at 02:23:55PM +0100, Lewis Gaul wrote:
> Thanks, once again that seems to have got me past that problem,

Do you have a patch for this one?

> only
> for a new one to crop up (this time hivex, which I'm not sure how to
> build or why it's required on Linux). I take it this isn't really an
> expected workflow, trying to get the package to build without being
> able to use a package manager to install the dependencies?

Hivex is needed to inspect and edit Windows registries, and is a
required dependency nowadays.  It's also only a small C library and is
available in most distros.

> Searching the output from ./configure, I can't yet see any mention
> of quite a few of the other dependencies listed
> at https://libguestfs.org/ guestfs-building.1.html that may be
> problematic, so I'm wondering if it's time to throw in the towel for
> this approach.
>
> All I'm looking for really is a way to programmatically edit a
> single file in a qcow2 VM image (which I planned to achieve with
> virt-edit) - is there an easier way to do this? Does virt-edit alone
> require all these dependencies, or would there be a way to build
> just virt-edit without pulling apart the build system?

> Alternatively, would it be possible/easier to build a static virt-edit binary
> in a CentOS 7 VM that could simply be copied onto this RHEL 7 machine?
>
> I appreciate your help so far and any further suggestions you might have!

RHEL 7 has libguestfs already.  You don't have root access, but it
should be possible to download what you need as RPMs, unpack them, and
run libguestfs from your home directory.  Something like this:

$ yumdownloader libguestfs
...
libguestfs-1.40.2-5.el7.x86_64.rpm                         | 2.4 MB   00:01

$ yumdownloader libguestfs-tools-c

$ rpm2cpio libguestfs-1.40.2-5.el7.x86_64.rpm | cpio -id
$ rpm2cpio libguestfs-tools-c-1.40.2-5.el7.x86_64.rpm | cpio -id

$ cd usr/bin/
$ LIBGUESTFS_PATH=$PWD/../lib64/guestfs LD_LIBRARY_PATH=../lib64 ./libguestfs-test-tool

You might also need to download other dependencies as RPMs and unpack
those in the same way (supermin, hivex, etc)

Or ask for root to install the package(!)

Rich.

--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW