Global updates question

28 views
Skip to first unread message

Fabrizio Romano Genovese

unread,
Feb 16, 2017, 9:20:05 PM2/16/17
to qubes-users
Hello all,

I'm trying to write a little script to globally update my qubes templates.
It should work more or less like this:

- It prepares a window layout for i3, so that all the opening terminals from the various templates will occupy the right place in a dedicated desktop;
- Then it launches the terminal in every template vm, feeding it a nice 'sudo dnf update'
- When the update is finished, one should have the chance to close the vm by pressing enter like it happens now on qubes manager.

I already implemented the first point (window layout) but I'm having problems at launching the terminals in the right way. I'm basically passing to the vm commands like 'xterm -e "sudo dnf update"', but what happens is that the terminal opens up, checks for updates and then closes without giving me the chance to say y/n.

As I mentioned above, in qubes manager when one clicks on "update vm" a nice terminal window opens up, does everything it has to do and then asks you if you want to shutdown the vm or not by pressing enter or control+c, respectively, if I remember well.
Since I would really like to have a similar feature in my script, I am wondering if qubes-manager calls some script to behave like it does.

If this is the case, I could just call the same script once for every template and solve my problems without struggle.

Thanks for your Time,
Fab

Andrew David Wong

unread,
Feb 16, 2017, 9:50:45 PM2/16/17
to Fabrizio Romano Genovese, qubes-users
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Have you considered not starting terminals in the TemplateVMs? By
using --pass-io and not starting the GUI of each TemplateVM, you can
save resources and hassle. Here's an example:

https://gist.github.com/andrewdavidwong/d0b109186de65835255d467ae103c289

- --
Andrew David Wong (Axon)
Community Manager, Qubes OS
https://www.qubes-os.org
-----BEGIN PGP SIGNATURE-----

iQIcBAEBCgAGBQJYpmTdAAoJENtN07w5UDAwIhkP/R81vgO979DTCObP/hKE2E5h
0m5ewGt3TH1Ing51Ueiws8PoYdNDyAkPogdXG4cQZX4a4kMzyzEjJ/zzEzddzoDQ
32uFSYzEq7el+eoKyS+OiYiniFlDy4RFAIsjDndkiC+ZPGbfEcvgrrzvm7Ggdcvt
cD+ZGJaoVOuoN6bRRqNkE73VAkSFoIG0LOeaK/keqJwZobQo28UdMYtvsGvONsDR
2vWjDO0jT1K0UEsp0eYuqWDN9B8Ihzw+dYDhSzbKrF3nMGPNXxjcE4edsVdmvL6m
LzCRisoi2k+C+w/AMFjHNjmxTUrx+Gw2/YoytWsXFrCXUIJSr5g/kWyoqVdKVCtx
hwOxVFQQdTDJFUl5vbb+9CvAjc6EXddASslyfXXC3iB1mEAy7ATHvSsMiIup/Lx9
mj2HUk3X6j8uxALo1/+31cqfegEYpuXRtYxRz8sRxFlo9AYDRRNGKgWIn9OJgxl8
6mZ/Cfj2qPDttKvPsYhtvUftiTALzy5g5wZLzQh6SEWCizwkR7dUxeX5k/XMWREg
9d4WgN2zQ3kTN2FtgNFhd37T/O5z4MZoXWMgcwGW3ZgygGNeO9g+t+OqAYypaHQZ
4I0iCIhZTaOC74x0o2yiGd6IKnWLHFXJj+igOKmRve1KE/x0e+EMgahcsKnY0dbM
OmaMAnd1i7oT+ngnDdSJ
=X6k5
-----END PGP SIGNATURE-----

Fabrizio Romano Genovese

unread,
Feb 16, 2017, 10:51:26 PM2/16/17
to Andrew David Wong, qubes-users
Well, I have considered it, yes, and it's true that launching many terminals can be resource intensive. But it's also faster:  Using & I can launch all the terminals at the same time, while cycling as in the script you linked I should wait for the previous update process to finish.

Moreover, I confess that staring at the terminals for 5 mins every couple of days relaxes me, so I like it better :)

Anyway I feel like I'm missing something, what I want to do doesn't look so difficult and I'm not sure why it doesn't work!

Cheers,
Fab

Jean-Philippe Ouellet

unread,
Feb 16, 2017, 11:18:46 PM2/16/17
to Fabrizio Romano Genovese, Andrew David Wong, qubes-users
On Thu, Feb 16, 2017 at 10:51 PM, Fabrizio Romano Genovese
<themastero...@gmail.com> wrote:
> Well, I have considered it, yes, and it's true that launching many terminals
> can be resource intensive. But it's also faster: Using & I can launch all
> the terminals at the same time, while cycling as in the script you linked I
> should wait for the previous update process to finish.

Not if you just background the process, like:

for dom in templateA templateB ...; do
qvm-run -p -u root some-template 'dnf update' &
done

Anyway... the code you're looking for is here:
https://github.com/QubesOS/qubes-core-agent-linux/blob/master/qubes-rpc/qubes.InstallUpdatesGUI

Fabrizio Romano Genovese

unread,
Feb 17, 2017, 5:39:01 AM2/17/17
to Jean-Philippe Ouellet, Andrew David Wong, qubes-users
Thanks everyone, that code does exactly what I wanted. Calling
bash /etc/qubes-rpc/qubes.InstallUpdatesGUI
with qvm-run for a given VM produces the same result of uptating the VM via qubes-manager.

Thanks for your Time,
Fab

T
Reply all
Reply to author
Forward
0 new messages