Can't upgrade from 38 to 39: problem with gnome-shell

I’ve successfully upgraded two machines from fedora 38 to 39. I’m working on a third. Some weirdness related to gnome-shell and mutter has happened, possibly in the last day or so, and I can’t figure out what’s going on.

When I run dnf system-upgrade download --releasever=39, I get an error message:

Error: 
 Problem: The operation would result in removing the following protected packages: gnome-shell
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages)

I downgraded gnome-shell and mutter back to 44, but that didn’t help.

When I try dnf system-upgrade download --releasever=39 --verbose --allowerasing --skip-broken, it outputs this:

Error: 
 Problem: problem with installed package gnome-shell-44.0-4.fc38.x86_64
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora requires libmutter-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora requires libmutter-clutter-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora requires libmutter-mtk-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora requires libmutter-cogl-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora requires libmutter-cogl-pango-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora requires mutter(x86-64) >= 45.0, but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora-modular requires libmutter-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora-modular requires libmutter-clutter-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora-modular requires libmutter-mtk-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora-modular requires libmutter-cogl-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora-modular requires libmutter-cogl-pango-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from fedora-modular requires mutter(x86-64) >= 45.0, but none of the providers can be installed
  - package gnome-shell-45.3-1.fc39.x86_64 from updates requires libmutter-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.3-1.fc39.x86_64 from updates requires libmutter-clutter-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.3-1.fc39.x86_64 from updates requires libmutter-mtk-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.3-1.fc39.x86_64 from updates requires libmutter-cogl-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.3-1.fc39.x86_64 from updates requires libmutter-cogl-pango-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.3-1.fc39.x86_64 from updates requires mutter(x86-64) >= 45.0, but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from updates-modular requires libmutter-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from updates-modular requires libmutter-clutter-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from updates-modular requires libmutter-mtk-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from updates-modular requires libmutter-cogl-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from updates-modular requires libmutter-cogl-pango-13.so.0()(64bit), but none of the providers can be installed
  - package gnome-shell-45.0-1.fc39.x86_64 from updates-modular requires mutter(x86-64) >= 45.0, but none of the providers can be installed
  - gnome-shell-44.0-4.fc38.x86_64 from @System  does not belong to a distupgrade repository
  - package mutter-45.0-12.fc39.x86_64 from fedora is filtered out by exclude filtering
  - package mutter-45.0-12.fc39.x86_64 from fedora-modular is filtered out by exclude filtering
  - package mutter-45.3-1.fc39.x86_64 from updates is filtered out by exclude filtering
  - package mutter-45.0-12.fc39.x86_64 from updates-modular is filtered out by exclude filtering

I’ve tried disabling all repos other than the official fedora ones. Same error.

dnf check finds no problems.

I’ve tried dnf clean all. Doesn’t fix anything.

Any ideas?

It looks like you have the gnome-shell package installed from updates-modular, and that would prevent you to upgrade. Try run

dnf module remove gnome-shell

and then run dnf distrosync.

Als run

dnf module list

to see if you have other packages installed from fedora-modular or updates-modular. They often created upgrade problems.

This is the issue. You have something like excludepkgs=mutter in dnf.conf. (It could also be in a repo configuration file, but you’re seeing it for four different repos, so that’s not likely.)

There is no gnome-shell module. With the retirement of modularity, the F39 modular repos point to the main fedora repo to facilitate upgrades. Those are just aliases of the gnome-shell package in the fedora repo, which dnf dutifully tries to use.

  • If I do dnf module list --installed, there’s no module anything installed.
  • I did dnf erase fedora-repos-modular and that didn’t help
  • dnf distrosync
  • There’s no reference to mutter in any of /etc/yum.repos.d or /etc/dnf/protected.d. That may have to do with passing --allowerasing and --skip-broken to dnf, but if I don’t pass those flags, all it tells me is that the operation would remove gnome-shell.

I’m also seeing a list of No match for group package... errors, which I didn’t think were important initially because most of them were fonts or *-firmware. I’m going through these and trying to figure out what they are, and if maybe something from RPM Fusion is somehow blocking the update.

I think I found my problem. I’d run into a problem with an update to mutter a while back, and I used the dnf versionlock plugin to lock it to a specific earlier version that didn’t have that problem. Now that I’ve done dnf versionlock clear, my current problem with mutter and gnome-shell seems to be gone, and I’m on to the next round of package issues.

It would be really nice if dnf would tell you why it can’t update something in situations like this.

I think you can propose this for DNF5, for the moment the plugin is just available on DNF4.

Probably a helper script, to check the config files before updating might help you as a workaround.

cat /etc/dnf/plugins/versionlock.conf
shows that the locked packages are listed on the same path in versionlock.list

Display /etc/dnf/dnf.conf and /etc/dnf/plugins/versionlock.list would remember you changes you made.

Btw, dnf gave you a hint as @chrisawi pointed out in request nr. 3