AppVM does not run TemplateVM software - i tried binding

I have installed a voip software called Zoiper 5 in a fedora-34 Template VM. It is rpm direct from website.

The software works fine in the TemplateVM.

I then created an AppVM based on the fedora-34-zoiper TemplateVM but the app does not run/load.

I noticed the software installed a folder /home/user/.Zoiper5 to handle license keys etc. It has probably installed other software into areas that the appVM does not inherit which sucks.

The app has installed files in the templateVM in the following locations:
/home/user/.Zoiper5
usr/bin
usr/local/applications
usr/share/
home/user/.config
usr/local/applications/Zoiper5
run/user/1000/systemd/
sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/app.slice

I tried to test the bind-dir thing documented here exactly as follows:

In AppVM app-zoiper based on fedora-34-zoiper TemplateVM

sudo mkdir -p /rw/config/qubes-bind.dirs.d
sudo nano /rw/config/qubes-bind-dirs.d/50_user.conf
binds+=( ‘/home/user/.Zoiper5’ )
Save

Reboot AppVM

This test did not work the folder .Zoiper5 is still not inherited from the TemplateVM. It does not show in AppVM /home/user/

Perhaps this might be helpful if you didn’t see it yet: Inheritance and persistence?

1 Like

hey, yes unless i missing or not understanding something the bottom line is you have to set files/folders to “bind” i followed the
instructions as detailed in my first post but failed

I think you are missing something.
template based qubes don’t inherit /home from their template.
When created, they build /home from /etc/skel in the template.

bind-dirs is used to make files that would ordinarily be drawn from the
template be specific to that qube.
If you do not use bind-dirs, any changes to most of the
filesystem,(everything except /home and /usr/local), will
be lost on restarting the qube.
bind-dirs does not make files in the template appear in the qube.

I never presume to speak for the Qubes team.
When I comment in the Forum or in the mailing lists I speak for myself.

You can try a few things depending on the functionality of the files that are installed in the root directory. But before you do anything else, keep in mind that you should never run applications in your templates. It’s okay to install apps but don’t run them.

Possible solutions include:

  1. Install the software in both the template and the appVM. The template install will ensure that initial files are present in the root directory of your appVM. The appVM install will make sure all user files are present in your home directory. This approach is not ideal because if the files in your root directory need to maintain changes made during a session, those changes will be gone next time you boot your appVM (they will revert to the initial state of the template install). But other apps have been known to work using this approach.

  2. Install the software in your appVM and use bind-dirs to maintain persistence for /run/user/1000/systemd/ and /sys/fs/cgroup/user.slice/user-1000.slice/user@1000.service/app.slice (you might want to narrow those directories down a bit?)

  3. Create a named disposable and try the approach of 1. and 2. but using the disposable VM template instead of the appVM when installing home files and/or binding root files.

  4. Create a standalone and install as usual.

The standalone approach is probably the most solid and reliable but it will lack the benefit of template inheritance.

1 Like

In such situations, I usually install software in TBVM and name it after the application, using it as dedicated to the app only, balancing it’s memory to the minimum needed for it to working properly. Would it make sense to combine installing the app both in the VMT and TBVM and binding specific dirs? I didn’t test such an approach since I didn’t have such a case…