Kloak broken after release-upgrade

I upgraded a different workstation and did get the fix and 3.20 version. The old workstation I upgraded does not get the fix. Even after clicking the install updates button.

This is wrong. The existing workstation didn’t update legacy-dist. It is still broken.

“Not pending migration to the stable repository” means it’s now published and in the stable repository. It should be installed automatically when you run software updates.

That’s weird, it should install automatically the same way any other software update would. If you run sudo apt update && sudo apt full-upgrade in a terminal, are you told that any packages have been held back? If so, is legacy-dist one of them?

1 Like

I have tried again on the old workstation. It upgraded legacy-dist to 3.20 and worked. Only thing I can think is the package was pushed recently. Within the 2 day period. 2 days ago it was not upgrading from 3.19.

1 Like

Looks like driving the state reset via legacy-dist is missing the right sequencing window, which is why the fix is failing to resolve the graph logic consistently for users doing in-place upgrades.

Instead of relying on a global package hook, we should handle this natively in debian/kloak.postinst.

Adding an upgrade check that forces systemctl disable kloak and systemctl daemon-reload during the postinst phase guarantees the stale X11 symlinks are purged before systemd ever tries to parse the new graphical.target unit.

@arraybolt3 @Patrick any objections to migrating this state reset directly into the kloak package scripts so it executes at the exact right moment during unpack?

Forgot to drop the snippet in my last post. Here is what the logic for debian/kloak.postinst would look like:

#!/bin/sh
set -e

if [ "$1" = "configure" ] && [ -n "$2" ]; then
    # Purge stale systemd state to resolve graphical.target ordering cycle
    systemctl disable kloak.service || true
    systemctl daemon-reload || true
    systemctl enable kloak.service || true
fi

#DEBHELPER#
exit 0

Should I create a PR or not

No. Kloak is non-Qubes version only. Release upgrade no longer supported since old version is deprecated.

This code can introduce new issues too such as re-enabling kloak for anyone who disabled it on purpose. Handling these cases gets complex.

Better to add a test to systemcheck? Doesn’t systemcheck already catch this?

1 Like