

At the moment I’m thinking of hopping to Debian 😅 I ran Fedora Workstation for a few weeks out of an external drive and then openSUSE Tumblewed for a couple weeks (this time on my main system drive) and thought I was good, never had any problems with updating the system. And today is my first distro update since I moved to openSUSE full-time and I get this :( Perhaps I am not ready for a rolling distro.
btw did Slowroll get systemd-boot already?




I know people are hating AI, but Opus again helped me. My system is fixed and updated. It diagnosed the root cause and told me how to fix it and I can attest that it worked. Below you can find a writeup on what was done.
When working with AI I check the commands I don’t understand, consult the
tldrpages andmanpages or ask it to further explain what it wants to do and why. I also have Snapper and Restic backup so I wasn’t too worried about screwing things up.However, if system updates can fail like this and I’m not at fault (I wasn’t), then I think Tumbleweed or rolling distros in general are not for me. I cannot keep asking AI for help, SELinux, labeling something in the filesystem – I don’t even know what that means. It was rough today and it gave me a scare. I am not ready to troubleshoot such advanced concepts as a Linux newbie, so I think I’ll bail and switch to something else.
Fixing
zypper dupfailure on openSUSE Tumbleweed with SELinuxA debugging session covering an
accountsserviceRPM install failure duringzypper dup, caused by a stale compiled SELinux policy in the kernel.The problem
zypper dupfailed on a single package:error: lsetfilecon: (11 /usr/share/accountsservice, system_u:object_r:accountsd_share_t:s0) Invalid argument error: Plugin selinux: hook fsm_file_prepare failed error: unpacking of archive failed on file /usr/share/accountsservice: cpio: (error 0x2) error: accountsservice-23.13.9-11.3.x86_64: install failed error: accountsservice-23.13.9-11.2.x86_64: erase skipped ( 4/360) Installing: accountsservice-23.13.9-11.3.x86_64 ..................................................................................................[error] Installation of accountsservice-23.13.9-11.3.x86_64 failed: Error: Subprocess failed. Error: RPM failed: Command exited with status 1. Abort, retry, ignore? [a/r/i] (a): a Warning: %posttrans and %transfiletrigger scripts are not executed when aborting! Problem occurred during or after installation or removal of packages: Installation has been aborted as directed.Diagnosis
The key line is:
RPM’s SELinux plugin is trying to apply the label
accountsd_share_tto/usr/share/accountsservice, and the kernel returnsEINVAL. This typicallymeans one of:
The
%posttranswarning at the end is a consequence — it means other packagesqueued in the transaction had their post-transaction scripts skipped, so the
system is in a partially-upgraded state.
Gathering facts
rpm -q selinux-policy # → selinux-policy-20260410-1.1.noarch zypper info selinux-policy # → Status: up-to-date, Version: 20260410-1.1 sudo getenforce # → Enforcing sudo semanage module -l | grep accountsd # → accountsd 100 pp sudo seinfo -t accountsd_share_t # → Types: 0 ← smoking gun df -T /usr/share/accountsservice # → /dev/mapper/cr_root btrfs ... getfattr -d -m - /usr/share/accountsservice # → security.selinux="system_u:object_r:usr_t:s0" sudo ausearch -ts recent -m AVC # → AVCs related to snapper_sdbootutil_plugin_t, all permissive=1 # → unrelated to this failureWhat the results mean
selinux-policyon disk is current (20260410-1.1).accountsdmodule is installed at priority 100.seinfo -t accountsd_share_treturnsTypes: 0— the loaded kernelpolicy does not know this type.
usr_tis setfine, so it’s not a filesystem support issue.
permissive=1, from sdbootutil housekeeping.Root cause
The
selinux-policyRPM on disk definesaccountsd_share_t, but the kernelis running an older compiled policy that predates that type. When RPM’s
SELinux plugin tried to apply
accountsd_share_t, the kernel said “I don’tknow what that is” →
EINVAL.This usually happens when
selinux-policywas updated on disk in an earliertransaction, but the policy store wasn’t recompiled and reloaded — likely
because a
%posttransscript that would have calledsemodule -Bwasskipped during a prior interrupted transaction.
Fix
1. Rebuild and reload the policy store
sudo semodule -BThis forces the modular policy (including
accountsd) to be recompiled fromthe on-disk modules and loaded into the kernel. It can take 30–90 seconds.
2. Verify the type is now known
sudo seinfo -t accountsd_share_t # → Types: 13. Retry the dup
sudo zypper dupThe
accountsserviceinstall should now succeed. Because the first attemptaborted with
%posttransscripts skipped,zypper dupmay have extracleanup/reinstall work to do — that’s expected.
4. Regenerate TPM2 PCR predictions
During the dup,
sdbootutilemitted warnings like:NVIndex policy created WARNING: Volume key cannot be extracted. Dropping PCR 15 WARNING: File measure-pcr-prediction should be updated WARNING: Call sdbootutil update-predictions --measure-pcr find: '/var/lib/pcrlock.d/': No such file or directoryBreakdown:
Volume key cannot be extracted. Dropping PCR 15— expected andharmless. sdbootutil binds without PCR 15 when the volume key isn’t
available; unlock still works via other PCRs.
find: '/var/lib/pcrlock.d/': No such file or directory— ties back toone of the AVCs we saw: the snapper sdbootutil plugin removed
pcrlock.dduring cleanup.
permissive=1means SELinux didn’t block it; this is aplugin ordering issue, not an SELinux problem.
WARNING: Call sdbootutil update-predictions --measure-pcr— the PCRprediction file needs regenerating before the next boot, or TPM2 may fail
to release LUKS keys and you’ll fall back to the passphrase prompt.
Run the suggested command once dup completes cleanly:
sudo sdbootutil update-predictions --measure-pcr5. Schedule a filesystem relabel and reboot
The on-disk label on
/usr/share/accountsservicewas still the genericusr_t, so after a policy jump it’s worth reconciling all labels:sudo fixfiles onboot sudo rebootfixfiles onbootschedules a full relabel at next boot — takes a few minutesduring boot but is the cleanest way to get labels in sync with the updated
policy.
Full sequence
sudo semodule -B # rebuild policy sudo seinfo -t accountsd_share_t # verify: Types: 1 sudo zypper dup # finish the dup sudo sdbootutil update-predictions --measure-pcr # regen TPM predictions sudo fixfiles onboot # schedule relabel sudo rebootSafety notes
manager). TPM2 auto-unlock is a convenience layer on top of the passphrase
— if predictions are wrong, the system falls back to the passphrase rather
than locking you out.
with
sudo snapper list. If anything goes sideways, an older snapshot canbe booted from systemd-boot.
re-run
sudo sdbootutil update-predictions --measure-pcronce booted —predictions sometimes need recalculating against the actual booted
measurements.
Key takeaways
lsetfilecon ... Invalid argumentduring an RPM install = the kernelpolicy doesn’t know a type the package is trying to apply. Fix with
semodule -Bto recompile and reload.seinfo -t <type>returningTypes: 0for a type you expect to exist isthe definitive signal that the loaded policy is stale relative to what’s on
disk.
zypper dupaborts mid-transaction,%posttransscripts areskipped — which can leave SELinux policy out of sync and cause cascading
failures on the next dup. Finishing the transaction cleanly and relabeling
afterwards is the safe recovery path.
addressing in the same session, since the next reboot will exercise both.