Upgrading Fedora Silverblue with RPMFusion packages

I wanted to share this with other people since I always have to remember. I learned about this when I upgraded Fedora 35 to Fedora 36 and figured there was a better way than nuke’n’booting my desktop every 6 months.

If you attempt to install the latest version of Fedora via GNOME Software, in this case Fedora 37, you’ll most likely encounter an error if you have RPMFusion enabled for Nvidia drivers. One way to get around this is to follow the directions in the documentation, but add a few more flags to your command.

This is the command I used, and it’s specifically for Fedora 36 to 37, so future me change the versions.

sudo rpm-ostree rebase fedora:fedora/37/x86_64/silverblue \
  --uninstall=rpmfusion-free-release-36-1.noarch \
  --uninstall=rpmfusion-nonfree-release-36-1.noarch \
  --install=https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-37.noarch.rpm \
  --install=https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-37.noarch.rpm

Now, the above has the versioned RPMFusion repositories, but if you want non-versioned repositories, use this command

sudo rpm-ostree rebase fedora:fedora/37/x86_64/silverblue \
  --uninstall=rpmfusion-free-release-36-1.noarch \
  --uninstall=rpmfusion-nonfree-release-36-1.noarch \
  --install=https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm \
  --install=https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm

This is what I did today to upgrade from Fedora 36 to Fedora 37 because GNOME Software failed and stated that I had to remove RPMFusion repositories.

Thanks for the tip! I usually nuke and pave, but for the first time in forever I got an error when trying to do so. The error says the installation is missing a boot parameter, but when I press ‘e’ at GRUB to go to the kernel command line I see an inst.stage2 variable pointing to my drive and Fedora Silverblue 37.

I tried adding a simple inst.repo=hd but no luck. I did the sha256sum on the ISO before I wrote it to the USB and it matched, also used the recently updated Fedora Media Writer (Fedora Flatpak) to write the file to the drive. I’ll try rebasing and hopefully report back success! Thanks again for the command.

1 Like

Sorry to spam your excellent post but just had to add the issue above turned out to be simply a faulty USB. I considered editing or deleting it but decided it might help someone else.

I recommend you look at Simplifying updates for RPM Fusion packages (and other packages shipping their own RPM repos)

Are you replying to me, or Matthew Phillips?

Hey so there is an important new part of RPM Fusion this time, the mesa-va-drivers-freeworld package which re-enables video acceleration for h264. I can’t get this to install, it keeps giving me this error. Any thoughts?

error: Checkout mesa-va-drivers-freeworld-22.2.3-1.fc37.x86_64: Hardlinking 89/c6114b411440ce804773e11b7218ee7a0a9c9b5749220a66009e62454f4fa7.file to nouveau_drv_video.so: File exists

May just see if you can delete it and then try the install. That’s something I haven’t learned with ostree is how to make changes and apply them that aren’t just Yum/Dnf upates.

1 Like

I actually ended up finding the solution just minutes later on reddit:

rpm-ostree override remove mesa-va-drivers --install mesa-va-drivers-freeworld

Didn’t save the previous vainfo output but it was about half the below list:

[matthew@fedora ~]$ vainfo
libva info: VA-API version 1.15.0
libva info: Trying to open /usr/lib64/dri/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_15
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.15 (libva 2.15.0)
vainfo: Driver version: Mesa Gallium driver 22.2.3 for AMD Radeon Vega 3 Graphics (raven, LLVM 15.0.0, DRM 3.48, 6.0.8-300.fc37.x86_64)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc