Any way to auto-update qubes

Is there a way to auto update all the things, so that you just need to restart the computer or cubes every now and then instead of the constant clicking in the update manager?

Maybe a cron-job in dom0, is there a cli way to update?

1 Like

See qubes4-multi-update. The -atu option should give you what you want


Thanks for the suggestion.

There is no official cli tools to accomplish the task?

I rather not run other stuff in my dom0. I’m not so good at reading code either so i have no way of auditing the script and if it does any other stuff than it says.

I see where you’re coming from, since dom0 is sacred to a Qubes installation and you don’t want to insert God-knows-what into that holy land.

The script is short and not particularly challenging to evaluate even for a programming newbie like myself, so this might be a good place to start learning how to read code, since it makes updating all your templates a breeze (especially if you have a ton of templates).

Another way of evaluating the script is to see if anyone in the community has said anything about it. Since the script is short and tasket’s Qubes tools are somewhat well-known in a technically proficient and security conscious crowd (Qubes OS users), chances are, a lot of knowledgeable people have looked over it over the last two years since it was last edited and didn’t find anything objectionable. Based on that, the likelihood of it containing anything malicious or harmful is very low.

It’s a bit like the reasoning behind why you trust major distributions like Debian (and to a lesser extent, Qubes).


sudo qubesctl --templates state.sls update.qubes-vm

On 4.0.3, this gives an almost immediate error that upgrades-status-notify doesn’t exist. Any idea what package I’m missing?

sorry, missed a param,

sudo qubesctl --skip-dom0 --show-output --templates state.sls update.qubes-vm

the error before, without --skip-dom0 is cause /usr/lib/qubes/upgrades-status-notify only exists in qubes and not dom0. it’s part of qubes-core-agent.

one warning with this method - it will try to do 4 upgrades in parallel. sometimes stuff seems to take a long time or times out.

it is probaly better to supply --targets [qube] instead of --templates and do one after another like

for templatevm in `qvm-ls|grep -w TemplateVM|awk '{print $1}'`
    echo upgrading "$templatevm"
    sudo qubesctl --show-output --targets "$templatevm" state.sls update.qubes-vm


I didn’t think dom0 was a “template”…

So, this method can never work to update dom0?

Re. parallel, can’t just set --max-concurrency <4?

Using “–targets” still required using “–skip-dom0”.

In my environment, I found it more useful to select by name:

for templatevm in $(qvm-ls --raw-list | grep "^debian\|^whonix.*[1234567890]$" | grep -v "\-dvm$"); do
    echo "Updating $templatevm..."
    sudo qubesctl --show-output --skip-dom0 --targets $templatevm state.sls update.qubes-vm && echo "Updating $templatevm Done" || echo "Updating $templatevm Error"

At this time the error check doesn’t work - it doesn’t seem qubesctl sets a return code…