I encountered an error following a recent update.
The following description was written by claude.ai using information from my system.
Claude suggests that I change to the portable file 'FileBot_<version>-portable.tar.xz' and stop layering FileBot.
There should be fewer caveats than with the Flatpak, but the lack of auto-update is a pity.
Analysis generated by claude.ai
The FileBot RPM fails during install/update on rpm-ostree based (atomic / immutable) Fedora systems. The package's %post script crashes and aborts the entire rpm-ostree transaction, which blocks every system update until FileBot is removed from the layer.
Environment
- OS: Bazzite stable (uBlue, Fedora-based, atomic / rpm-ostree)
- Install method: official FileBot RPM repo, layered via rpm-ostree
- FileBot version: filebot-5.2.1-amd64.x86_64
What happens
During `rpm-ostree upgrade` the post-install script fails:
Code: Select all
error: Running %post for filebot: bwrap(/bin/sh): child process exited with status 134; run `journalctl -t 'rpm-ostree(filebot.post)'` for more information
Code: Select all
/proc/self/fd/5: line 1: 3 Aborted (core dumped) /usr/share/filebot/jre/bin/java -Xshare:dump -XX:SharedClassListFile="/usr/share/filebot/jsa/classes.jsa.lst" -XX:SharedArchiveFile="/usr/share/filebot/jsa/classes.jsa" -jar "/usr/share/filebot/jar/filebot.jar" > "/usr/share/filebot/jsa/classes.jsa.log" 2>&1
rpm-ostree runs %post scripts inside a bubblewrap (bwrap) sandbox with a read-only /usr and a restricted environment. The AppCDS archive generation (`java -Xshare:dump`) aborts in that sandbox, the %post exits non-zero, and rpm-ostree rolls back the whole deployment. Since the CDS archive is only a startup optimization, the failure is harmless for functionality but fatal for the transaction.
Impact
This breaks all updates on any atomic rpm-ostree distro (Silverblue, Kinoite, Bazzite, Bluefin, Aurora, …), not just Bazzite. The only current workaround is:
Code: Select all
rpm-ostree upgrade --uninstall filebot
Make the CDS dump in %post non-fatal and/or skip it in restricted/sandboxed environments, e.g.
- append `|| :` so a failed dump can't fail the script, and/or
- generate the AppCDS archive lazily on first launch instead of in %post, and/or
- detect a read-only /usr (or sandbox) and skip the dump there.
Thanks!