How can I do a partial Silverblue upgrade?

Although I’ve been using Linux for a very long while, including Silverblue, sometimes I feel like a newbie.

I recently did rpm-ostree upgrade on my laptop with no problems, but on my desktop hell is breaking lose. After doing plenty of research online, including checking on bug trackers, I’ve learned there is an issue with Wayland on Radeon graphics. It started earlier this month with the Mesa 24.1.2 release (I’m currently on 24.0.8). While a solution is still underway, is there a way to upgrade my system, but keeping Mesa the same?

Consider excluding/masking the Mesa update. That will keep you on the version you have until you change it. I’m not on Silverblue, but if you got it from the RPMFusion repos, you could do :

exclude=
In the rpmfusion repo file

1 Like

Silverblue is a different animal altogether.

:face_with_monocle:

How do I use copr on Silverblue?

That should work anyways. The rpmfusion changes are done locally and the RPMs added to the ostree deployment.

So if rpm respects that setting it should work.

Before doing that you first need to rollback to the previous deployment

rpm-ostree rollback

And there

sudo ostree admin pin 0

To keep that version. From that origin you can then block mesa updates and update normally. I dont know how well that works and it for sure should be a temporary fix.

Be sure to add useful data to that issue report if it may be missing.

If you are on Fedora 40 you can also rebase to the older F39, which may have older packages.

Also about COPR, I honestly recommend my script:

But wait… this magazine article has a different way of adding repos using ostree

1 Like

My current working configuration is already pinned.

How can I block Mesa updates while updating everything else normally? Apologies for being such a newbie.

Try what @hamrheadcorvette suggested.

This discussion had no solution

The repo files are in cd /etc/yum.repos.d/ find the rpmfusion .repo file that brings in Mesa, and add the exclude= line after the gpgkey= line

1 Like

Also use rpm -qa | grep mesa to get the packagename

1 Like

Running rpm-ostree upgrade --exclude mesa-dri-drivers followed by the whole shebang gives me:

error: Unknown option --exclude

rpm -qa | grep mesa gives me:

mesa-filesystem-24.0.8-1.fc40.x86_64
mesa-libGLU-9.0.3-4.fc40.x86_64
mesa-libxatracker-24.0.8-1.fc40.x86_64
mesa-va-drivers-24.0.8-1.fc40.x86_64
mesa-vulkan-drivers-24.0.8-1.fc40.x86_64
mesa-libglapi-24.0.8-1.fc40.x86_64
mesa-dri-drivers-24.0.8-1.fc40.x86_64
mesa-libgbm-24.0.8-1.fc40.x86_64
mesa-libEGL-24.0.8-1.fc40.x86_64
mesa-libGL-24.0.8-1.fc40.x86_64

However, grep -inR mesa /etc/yum.repos.d/ returns blank.

Here’s the output from ls -1 /etc/yum.repos.d/:

_copr:copr.fedorainfracloud.org:phracek:PyCharm.repo
fedora-cisco-openh264.repo
fedora.repo
fedora-updates-archive.repo
fedora-updates.repo
fedora-updates-testing.repo
google-chrome.repo
insync.repo
rpmfusion-nonfree-nvidia-driver.repo
rpmfusion-nonfree-steam.repo

I’m sorry, but the solution to this problem is getting more complex than the problem itself, so I’d rather wait until a permanent solution is presented. Thank y’all!

Wait @hamrheadcorvette who said this is about rpmfusion? This is an issue with upstream mesa.

So if the current deployment works, the best solution is to just not update until it is fixed.

Or try the same exclude=mesa-dri-drivers line but in the normal Fedora repo file.

But make sure you have that deployment pinned, as all that is unsupported.

But wait, you dont actually pull mesa from the repos but from the ostree remote. So @vgaetera 's solution of building a COPR with the current outdated mesa .spec file and then layering that package would be the correct way…

Well… just dont update XD

Edit: see answer below

I was under the impression the OP was pulling in from RPMFusion. . . So that is my bad.

That’s exactly what I’ve been doing on my desktop: NOTHING!

I can agree, but I have no idea where to start, so I’ll continue doing nothing. I thought it would be as simple as running commands 1 through n, but I was mistaken. I’ll leaving it all as is. Thanks again!

1 Like

Kind of related issue

But to my knowledge, bootc container images will be supported soon. Then as a next step, DNF gets the capabilities that rpm-ostree currently has.

And then we have a unified package manager with all the usual capabilities.

You could potentially use “override” to pin a package.

Let’s suppose you have mesa 24.0.5-1 installed (probably you have a more recent version) and you don’t want to upgrade them.

$ rpm -qa | grep mesa
mesa-filesystem-24.0.5-1.fc40.x86_64
mesa-libxatracker-24.0.5-1.fc40.x86_64
mesa-va-drivers-24.0.5-1.fc40.x86_64
mesa-vulkan-drivers-24.0.5-1.fc40.x86_64
mesa-libglapi-24.0.5-1.fc40.x86_64
mesa-dri-drivers-24.0.5-1.fc40.x86_64
mesa-libgbm-24.0.5-1.fc40.x86_64
mesa-libEGL-24.0.5-1.fc40.x86_64
mesa-libGL-24.0.5-1.fc40.x86_64

We have to download the RPMs corresponding to this version.
Let’s use the koji command. You can layer it or use toolbx.

$ toolbox create
$ toolbox enter
⬢$ sudo dnf install koji
⬢$ mkdir ~/work
⬢$ cd ~/work
⬢$ koji list-builds --package=mesa --pattern "mesa*24.0.5-1*fc40"
⬢$ koji download-build --arch=$(uname -m) mesa-24.0.5-1.fc40
⬢$ exit
$ cd ~/work
$ rpm-ostree override replace mesa* 
$ systemctl reboot

To reset the override, get the list of packages from the LocalOverrides line resulting from the rpm-ostree status command

$ rpm-ostree status
State: idle
Deployments:
● fedora:fedora/40/x86_64/silverblue
                  Version: 40.20240627.0 (2024-06-27T00:42:48Z)
               BaseCommit: b66de17a11e10dbb105807d7b02e0236700b150dd94d73368cdbc6d1ddf025f1
             GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC
           LocalOverrides: mesa-filesystem mesa-libgbm mesa-vulkan-drivers mesa-libEGL mesa-libglapi mesa-dri-drivers mesa-libxatracker mesa-libGL mesa-va-drivers 24.1.2-2.fc40 -> 24.0.5-1.fc40
...

Then

$ rpm-ostree override reset mesa-filesystem mesa-libgbm mesa-vulkan-drivers mesa-libEGL mesa-libglapi mesa-dri-drivers mesa-libxatracker mesa-libGL mesa-va-drivers

Note: this is an example.
Note: do it at your own risk.

3 Likes

And so I did! As it turns out, after following your instructions, I was able to upgrade my system while keeping the older Mesa drivers. Please see some sample commands:

rpm -qa | grep mesa

mesa-libGLU-9.0.3-4.fc40.x86_64
mesa-filesystem-24.0.8-1.fc40.x86_64
mesa-va-drivers-24.0.8-1.fc40.x86_64
mesa-libglapi-24.0.8-1.fc40.x86_64
mesa-dri-drivers-24.0.8-1.fc40.x86_64
mesa-libgbm-24.0.8-1.fc40.x86_64
mesa-libEGL-24.0.8-1.fc40.x86_64
mesa-libGL-24.0.8-1.fc40.x86_64
mesa-vulkan-drivers-24.0.8-1.fc40.x86_64
mesa-libxatracker-24.0.8-1.fc40.x86_64

inxi -G

Graphics:
  Device-1: AMD Oland [Radeon HD 8570 / R5 430 OEM R7 240/340 Radeon 520 OEM]
    driver: radeon v: kernel
  Display: wayland server: X.Org v: 24.1 with: Xwayland v: 24.1.0
    compositor: gnome-shell v: 46.2 driver: X: loaded: radeon
    unloaded: fbdev,modesetting,vesa dri: radeonsi gpu: radeon
    resolution: 2560x1440~75Hz
  API: OpenGL v: 4.5 vendor: amd mesa v: 24.0.8 renderer: OLAND (radeonsi
    LLVM 18.1.1 DRM 2.50 6.9.6-200.fc40.x86_64)
  API: EGL Message: EGL data requires eglinfo. Check --recommends.

rpm-ostree status --booted

State: idle
BootedDeployment:
● fedora:fedora/40/x86_64/silverblue
                  Version: 40.20240628.0 (2024-06-28T01:04:36Z)
               BaseCommit: 0e3b27a3929e9578dce841d1bdd324ddd22855e84ffe6cebe3b81b35a9bdd271
             GPGSignature: Valid signature by 115DF9AEF857853EE8445D0A0727707EA15B79CC
           LocalOverrides: mesa-va-drivers mesa-filesystem mesa-vulkan-drivers mesa-libEGL mesa-libgbm mesa-libglapi mesa-dri-drivers mesa-libxatracker mesa-libGL 24.1.2-2.fc40 -> 24.0.8-1.fc40
          LayeredPackages: bat btop distrobox duf eza fastfetch fdupes fira-code-fonts foot gimp gnome-tweaks google-arimo-fonts google-cousine-fonts
                           google-roboto-condensed-fonts google-roboto-fonts google-roboto-mono-fonts google-roboto-slab-fonts google-tinos-fonts inxi mc
                           mozilla-fira-fonts-common mozilla-fira-mono-fonts mozilla-fira-sans-fonts ncdu neovim nmap python3-beautifulsoup4 python3-bpython
                           python3-sqlalchemy python3-stem ranger rclone sl tmux ugrep xxd
            LocalPackages: insync-3.9.1.60010-fc40.x86_64 mullvad-vpn-2024.3-1.x86_64

Thank you so very much!

1 Like

Right, this is the correct solution. We should document this somewhere

2 Likes

Added atomic-desktops, docs-team, rpm-ostree and removed gnome, radeon, wayland

:eyes: