Simplifying updates for RPM Fusion packages (and other packages shipping their own RPM repos)

I’m sharing here a tip that I’ve just found to make it simpler for major update for RPM Fusion users on Silverblue and other rpm-ostree based variants.

The first time you install RPM Fusion, you should follow the official guide: Configuration - RPM Fusion

But then, once you have rebooted into the new deployment, you can run the following command to remove the “lock” on a specific version of the packages (this is essentially removing the fixed version packages and installing the non-versioned ones in the same transaction):

$ sudo rpm-ostree update \
            --uninstall rpmfusion-free-release-34.0.3.noarch \
            --uninstall rpmfusion-nonfree-release-34.0.2.noarch \
            --install rpmfusion-free-release \
            --install rpmfusion-nonfree-release

I have not tested that yet across a major version rebase, but I’m hopeful that this should work. This will at least keep those packages updated for a given version, which is already better than what I had before.

Note that this also work with the Google Chrome RPM package which includes its own RPM repo.

20 Likes

What repository do those version-less packages come from? I have the RPM-fusion repos installed with rpm-ostree like that, and I get this:

$ rpm -qa|grep fusion
rpmfusion-free-release-34-1.noarch
rpmfusion-nonfree-release-34-1.noarch
rpmfusion-free-obsolete-packages-34-1.fc34.noarch
$ rpm-ostree update --uninstall rpmfusion-free-release-34-1.noarch --uninstall rpmfusion-nonfree-release-34-1.noarch --install rpm-fusion-free-release --install rpm-fusion-nonfree-release
⠂ Receiving metadata objects: 1/(estimating) 49 bytes/s 196 bytes... 
2 metadata, 0 content objects fetched; 788 B transferred in 5 seconds; 0 bytes cReceiving metadata objects: 1/(estimating) 49 bytes/s 196 bytes... done
Checking out tree 6964fa7... done
Enabled rpm-md repositories: updates rpmfusion-nonfree-updates rpmfusion-free-updates rpmfusion-free fedora rpmfusion-nonfree fedora-cisco-openh264 updates-archive
rpm-md repo 'updates' (cached); generated: 2021-06-01T00:51:53Z
rpm-md repo 'rpmfusion-nonfree-updates' (cached); generated: 2021-05-27T12:03:54Z
rpm-md repo 'rpmfusion-free-updates' (cached); generated: 2021-05-27T11:44:59Z
rpm-md repo 'rpmfusion-free' (cached); generated: 2021-04-25T18:10:08Z
rpm-md repo 'fedora' (cached); generated: 2021-04-23T10:47:57Z
rpm-md repo 'rpmfusion-nonfree' (cached); generated: 2021-04-25T18:36:02Z
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2021-02-23T00:49:00Z
rpm-md repo 'updates-archive' (cached); generated: 2021-06-01T01:33:47Z
Importing rpm-md... done
error: Packages not found: rpm-fusion-free-release, rpm-fusion-nonfree-release
1 Like

@siosm
thx for sharing this tip!

This is weird. Can you give us the output of rpm-ostree status?

The packages come from the rpm-fusion repository themselves.

1 Like

Here it is:

bkhl@foxglove:~$ rpm-ostree status
State: idle
Deployments:
● ostree://fedora:fedora/34/x86_64/silverblue
                   Version: 34.20210531.0 (2021-05-31T00:37:11Z)
                BaseCommit: 4d5b7071e84ba156af8f6d333be77ac00244e24a824aa11a65501c49e90222ea
              GPGSignature: Valid signature by 8C5BA6990BDB26E19F2A1A801161AE6945719A39
           LayeredPackages: NetworkManager-fortisslvpn-gnome chromium-freeworld emacs exfat-utils fuse-exfat git-lfs
                            gstreamer1-plugin-openh264 langpacks-en langpacks-en_GB langpacks-sv langpacks-th mozilla-openh264 net-tools
                            nextcloud-client nextcloud-client-nautilus qemu virt-manager wireguard-tools wl-clipboard
             LocalPackages: rpmfusion-nonfree-release-34-1.noarch rpmfusion-free-release-34-1.noarch

  ostree://fedora:fedora/34/x86_64/silverblue
                   Version: 34.20210531.0 (2021-05-31T00:37:11Z)
                BaseCommit: 4d5b7071e84ba156af8f6d333be77ac00244e24a824aa11a65501c49e90222ea
              GPGSignature: Valid signature by 8C5BA6990BDB26E19F2A1A801161AE6945719A39
           LayeredPackages: NetworkManager-fortisslvpn-gnome chromium-freeworld emacs exfat-utils fuse-exfat git-lfs
                            gstreamer1-plugin-openh264 langpacks-en langpacks-en_GB langpacks-sv langpacks-th mozilla-openh264 net-tools
                            nextcloud-client nextcloud-client-nautilus qemu virt-manager wireguard-tools wl-clipboard
             LocalPackages: rpmfusion-free-release-34-1.noarch
                    Pinned: yes
bkhl@foxglove:~$ rpm-ostree update --uninstall rpmfusion-free-release-34-1.noarch --uninstall rpmfusion-nonfree-release-34-1.noarch --install rpm-fusion-free-release --install rpm-fusion-nonfree-release
⠚ Receiving metadata objects: 1/(estimating) 49 bytes/s 196 bytes... 
Receiving metadata objects: 1/(estimating) 49 bytes/s 196 bytes... done
Checking out tree cb5b9e7... done
Enabled rpm-md repositories: updates rpmfusion-nonfree-updates rpmfusion-free-updates rpmfusion-free fedora rpmfusion-nonfree fedora-cisco-openh264 updates-archive
rpm-md repo 'updates' (cached); generated: 2021-06-02T00:51:25Z
rpm-md repo 'rpmfusion-nonfree-updates' (cached); generated: 2021-05-27T12:03:54Z
rpm-md repo 'rpmfusion-free-updates' (cached); generated: 2021-05-27T11:44:59Z
rpm-md repo 'rpmfusion-free' (cached); generated: 2021-04-25T18:10:08Z
rpm-md repo 'fedora' (cached); generated: 2021-04-23T10:47:57Z
rpm-md repo 'rpmfusion-nonfree' (cached); generated: 2021-04-25T18:36:02Z
rpm-md repo 'fedora-cisco-openh264' (cached); generated: 2021-02-23T00:49:00Z
rpm-md repo 'updates-archive' (cached); generated: 2021-06-02T01:46:41Z
Importing rpm-md... done
error: Packages not found: rpm-fusion-free-release, rpm-fusion-nonfree-release

My regular setup is the rollback here, and pinned because virt-manager stopped working they day after that, but that’s a story for a different post when I get to it.

Anyway, I get the same thing with only the free package installed as normal, but switched to your setup with both free and nonfree packages to check if it would make a difference.

Try instead:

bkhl@foxglove:~$ rpm-ostree update --uninstall
rpmfusion-free-release-34-1.noarch --uninstall
rpmfusion-nonfree-release-34-1.noarch --install rpm-fusion-free-release
–install rpm-fusion-nonfree-release

rpm-ostree update --uninstall rpmfusion-free-release-34-1.noarch --uninstall rpmfusion-nonfree-release-34-1.noarch --install rpmfusion-free-release --install rpmfusion-nonfree-release

V/r,
James Cassell

2 Likes

That did it, thanks.

Oh! My bad, I did not copy paste the package names and I had an unwanted - in there! :sweat_smile: Fixed now. Thanks!

for now, why use Google Chrome rpm instead of flatpak?

1 Like

Flatpak of Google Chrome? Where?

Flathub beta

1 Like

The Flatpak version is unable to handle has some issues handling U2F USB keys (Yubikey, etc.).

1 Like

I’ve now tested that and it works great.

4 Likes

Whenever I run rpm-ostree status and see those versioned rpm fusion packages - I always wondered what would happen to them when i upgrade to SB 35 sometime in the future. I was expecting I might need to do some manual fix up…

I’m glad you’ve answered that for me ahead of time!

I’m curious though, what happens if we don’t “unpin” those packages before doing the SB 34 to 35 upgrade?

From memory, you get an error during the rebase.

It was necessary to replace the local package of rpmfusion in the same commit to avoid errors with rpm-ostree being unable to find the next releases (still-requested) rpmfusion-provided overlay packages.
The longer alternative was to reset overrides, rebase, add the new local packages and re-overlay packages.

Until now I was using:

rpm-ostree rebase fedora:fedora/34/x86_64/silverblue \
--uninstall rpmfusion-free-release-33-1.noarch \
--install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-34.noarch.rpm \
--uninstall rpmfusion-nonfree-release-33-1.noarch \
--install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-34.noarch.rpm

Can confirm the tip by @siosm works beautifully. Tested on a SB34->SB35 upgrade. Thanks!

2 Likes

This looks sensible as a correct fix for this process. (rebasing layered rpm along the baseos).

But then you will have to reproduce on any rpmfusion packages that is installed via rpm-ostree (specially thoses that have any deps changes from the base fedora distribution).

So to me it sounds like the rpmfusion-*release rebase issue is the tree hiding the whole forest (you have a bigger problem behind). The google-chrome are not good example as they are distro agnostic.

If any ostree/Silverblue involved developer are kind enough to escalate to bugzilla.rpmfusion.org I’m sure we can draft a barely usable solution that can work as expected everywhere.

Thanks in advance.

I’m not sure I follow the issue here. Other packages installed from the rpm-fusion repos via rpm-ostree install will be updated if needed during each system update as their versions are not pinned.

This workaround is only needed here as the initial installation from RPM packages is pinning the version of the packages.

$ sudo rpm-ostree update
–uninstall rpmfusion-free-release-34.0.3.noarch
–uninstall rpmfusion-nonfree-release-34.0.2.noarch
–install rpmfusion-free-release
–install rpmfusion-nonfree-release

Didn’t work for me somehow. Had done the above command with fedora 33. But after rebase to 36, the upgrade complained about rpmfusion-free-release-…36 not being found or something. Had to do a

rpm-ostree reset

and then add the version-numbered again.

Please always include the output of rpm-ostree status and exact error logs, error messages and commands when you have issues.