Kinoite 37 - Errors related to Firefox base package being removed

Rebased to Kinoite 37 today from Kinoite 36. The following is probably similar on Silverblue as well, though I haven’t tested. On my system, I have removed the Firefox package from the base package in favor of having the Firefox flatpak installed, as probably many have.

On Kinoite 36, this was my setup:

  fedora:fedora/36/x86_64/kinoite
                  Version: 36.20221113.0 (2022-11-13T00:52:15Z)
               BaseCommit: fdd610bdb75a1758882025aa61e93000b8d7cb982e2df02ff5825605b6f9daf5
             GPGSignature: Valid signature by 53DED2CB922D8B8D9E63FD18999F7CBF38AB71F4
      RemovedBasePackages: firefox 106.0.4-1.fc36
      ...

Trying to rebase to Kinoite 37 directly led to an error, which causes the rebase to fail:
rpm-ostree rebase fedora:fedora/37/x86_64/kinoite

error: Could not depsolve transaction; 1 problem detected:
 Problem: package firefox-langpacks-106.0.4-1.fc37.x86_64 requires firefox = 106.0.4-1.fc37, but none of the providers can be installed

In order to successfully rebase, I needed to first un-remove the Firefox package: rpm-ostree override reset firefox. Then reboot, and start the rebase to Kinoite 37 again - which then finishes successfully.

Once Kinoite 37 was installed, I tried to remove the Firefox package again, but was met with the same error:

rpm-ostree override remove firefox               
Checking out tree aebb33c... done
Resolving dependencies... done
error: Could not depsolve transaction; 1 problem detected:
 Problem: package firefox-langpacks-106.0.4-1.fc37.x86_64 requires firefox = 106.0.4-1.fc37, but none of the providers can be installed
  - conflicting requests

Seems like there’s a new base package, firefox-langpacks that relies on firefox, so you need to remove both of them.

rpm-ostree override remove firefox-langpacks firefox
Checking out tree aebb33c... done
Resolving dependencies... done
Relabeling... done
Applying 2 overrides and 211 overlays
Processing packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Freed: 65.4 kB (pkgcache branches: 0)
Upgraded:
  xen-libs 4.16.2-2.fc37 -> 4.16.2-3.fc36
  xen-licenses 4.16.2-2.fc37 -> 4.16.2-3.fc36
Removed:
  firefox-106.0.4-1.fc37.x86_64
  firefox-langpacks-106.0.4-1.fc37.x86_64
Use "rpm-ostree override reset" to undo overrides
Run "systemctl reboot" to start a reboot

This will successfully remove Firefox from the base packages, but it will also upgrade 2 other packages - oddly using the F36 versions.

Edit - removed; updated info below:

Looks like the F37 repo has an older version of xen-libs and xen-licenses than the F36 repo. This should resolve itself once the F37 repo gets the newer version as well.

Rebooting and running rpm-ostree upgrade again will “downgrade” these packages using the correct F37 versions.

rpm-ostree upgrade   
note: automatic updates (stage) are enabled
2 metadata, 0 content objects fetched; 788 B transferred in 1 seconds; 0 bytes content written
Checking out tree aebb33c... done
Enabled rpm-md repositories: fedora-cisco-openh264 fedora-modular updates-modular updates fedora updates-archive
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2022-10-06T11:01:40Z solvables: 4
rpm-md repo 'fedora-modular' (cached); generated: 2022-11-10T09:23:24Z solvables: 1454
rpm-md repo 'updates-modular' (cached); generated: 2022-11-10T20:30:33Z solvables: 1454
rpm-md repo 'updates' (cached); generated: 2022-11-15T01:10:34Z solvables: 6944
rpm-md repo 'fedora' (cached); generated: 2022-11-10T09:30:00Z solvables: 66822
rpm-md repo 'updates-archive' (cached); generated: 2022-11-15T01:30:00Z solvables: 5181
Resolving dependencies... done
Applying 2 overrides and 211 overlays
Processing packages... done
Running pre scripts... done
Running post scripts... done
Running posttrans scripts... done
Writing rpmdb... done
Writing OSTree commit... done
Staging deployment... done
Downgraded:
  xen-libs 4.16.2-3.fc36 -> 4.16.2-2.fc37
  xen-licenses 4.16.2-3.fc36 -> 4.16.2-2.fc37
Run "systemctl reboot" to start a reboot
5 Likes

Thanks for your guide. I moved your topic to a general category, because overriding system packages is not recommended and so it’s not probably a Common Issue (also, it’s not a bug).

2 Likes

I use the base version of Firefox myself. But I see a lot of people using the Flatpak of Firefox. Partly because it has codec support out of the box without having to overlay that. In that case you really want to perform this override, as it’s super confusing to have two different but seemingly identical Firefox instances among your applications.

Not saying it’s misplaced here. But I’m not sure if I agree with it not being a common issue. I’d be surprised if much less than 10% of the active userbase removes the Firefox base package in favour of the flatpak. (Just judging from threads online, I could be completely wrong of course as I have no real statistics on this other than my gut feeling)

I guess that depends upon your definition of “common issue”.
The clean install of fedora installs firefox. If a user then decides he wants something different and chooses to install the flatpak version is it then a “common issue” when problems are noted?

I think not since the user chose to install software from a 3rd party and the conflict was user created.

In general, for any spin of fedora, if the user chooses to install software from a 3rd party then problems are user created and not fedora based. It is up to the user to solve those.

I might agree that the user could be warned of known issues, but in general the user assumes any risk in modifying or installing software so it is not 100% fedora based.

The general guideline (that has always been in place) is that the user is responsible for user caused problems and the user has to educate themselves of potential problems before moving forward. In this case a quick google search (or even on this site) will show the related issues that have been reported.

Though I agree that users should assume risk with what they modify, I disagree that this error is due to 3rd party conflict.

This error is solely derived from the fact that a user removes Firefox from the base image. The error would still show up even if the user does not install a 3rd party (Flatpak) version of Firefox.

The root cause is based on rpm-ostree’s method of removing base packages and the fact that the base image changed in F37 to include a new package (firefox-langpacks) that depends on firefox. So in this case I would classify this as a Fedora quirk (maybe wouldn’t even classify it as an “issue”), not a 3rd party one.

This is a very specialized case that is more equivalent to a bug in packaging than anything else.

I’m definitely of the opinion we should drop the browser out of the base image, but a lot involved in that.

Arguably perhaps this is an rpm-ostree bug. It’s tricky though because the behavior is kind of intentional today; we probably could start auto-removing other dependencies too but the concern with that is unintentional “cascading” where e.g. the browser gains a dependency on some core library or whatever and we add that to the removal set too.

Perhaps some heuristics could be done where if the new dependencies themselves aren’t depended on by anything else…

I think someone already mentioned it, but another possibility is to just hide the desktop file (though hmm, not sure we yet support systemd-style overrides in /etc or $HOME for system apps yet).

Finally, I would highlight though that Changes/OstreeNativeContainerStable - Fedora Project Wiki is pushing all this type of stuff to happen in a custom build - in which case we’ll much more likely follow the traditional yum/dnf/rpm behavior here.

2 Likes

Thanks @walters for your insight. I’ve been keeping an eye on the work being done for the change to container-native images for rpm-ostree and am looking forward to when that comes out.