Can't update Fedora Silverblue with nvidia drivers

When trying to update my Fedora Silverblue installation I get the following error:

$ rpm-ostree upgrade
...
error: Running %post for akmod-nvidia: Executing bwrap(/bin/sh): Child process killed by signal 1; run `journalctl -t 'rpm-ostree(akmod-nvidia.post)'` for more information

I try to look up more information:

$ journalctl -t 'rpm-ostree(akmod-nvidia.post)' | tail -25
...
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: warning: rpmdb: BDB2053 Freeing read locks for locker 0x3a: 2315/140631765849664
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: warning: rpmdb: BDB2053 Freeing read locks for locker 0x3b: 2315/140631765849664
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: warning: rpmdb: BDB2053 Freeing read locks for locker 0x3c: 2315/140631765849664
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: warning: user mockbuild does not exist - using root
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: warning: group mock does not exist - using root
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: warning: user mockbuild does not exist - using root
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: warning: group mock does not exist - using root
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: Installing /usr/src/akmods/nvidia-kmod-460.39-1.fc33.src.rpm
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: Building target platforms: x86_64
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: Building for target x86_64
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: setting SOURCE_DATE_EPOCH=1611619200
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]: error: Failed build dependencies:
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]:         /usr/bin/kmodtool is needed by nvidia-kmod-3:460.39-1.fc33.x86_64
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]:         gcc is needed by nvidia-kmod-3:460.39-1.fc33.x86_64
Feb 13 11:26:19 $(hostname) rpm-ostree(akmod-nvidia.post)[11268]:         xorg-x11-drv-nvidia-kmodsrc >= 3:460.39-1 is needed by nvidia-kmod-3:460.39-1.fc33.x86_64

What is weird is that this package exists on my current ostree commit:

$ rpm-ostree db list 5d1a6e407d9650a631d89e823fda647409fd2d09832c04763a9b00cd3acdfb84 | grep nvidia
 akmod-nvidia-3:460.39-1.fc33.x86_64
 nvidia-persistenced-3:460.39-1.fc33.x86_64
 nvidia-settings-3:460.39-1.fc33.x86_64
 xorg-x11-drv-nvidia-3:460.39-1.fc33.x86_64
 xorg-x11-drv-nvidia-cuda-3:460.39-1.fc33.x86_64
 xorg-x11-drv-nvidia-cuda-libs-3:460.39-1.fc33.i686
 xorg-x11-drv-nvidia-cuda-libs-3:460.39-1.fc33.x86_64
 xorg-x11-drv-nvidia-kmodsrc-3:460.39-1.fc33.x86_64
 xorg-x11-drv-nvidia-libs-3:460.39-1.fc33.i686
 xorg-x11-drv-nvidia-libs-3:460.39-1.fc33.x86_64

Any ideas what may be happening?

I don’t know if this is a repository problem. The software center, after installation, had the option to enable a nonfree nvidia drivers repository. The repo file is:

$ pwd
/etc/yum.repos.d
$ cat rpmfusion-nonfree-nvidia-driver.repo 
[rpmfusion-nonfree-nvidia-driver]
name=RPM Fusion for Fedora $releasever - Nonfree - NVIDIA Driver
#baseurl=http://download1.rpmfusion.org/nonfree/fedora/nvidia-driver/$releasever/$basearch/
metalink=https://mirrors.rpmfusion.org/metalink?repo=nonfree-fedora-nvidia-driver-$releasever&arch=$basearch
enabled=1
enabled_metadata=1
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=file:///usr/share/distribution-gpg-keys/rpmfusion/RPM-GPG-KEY-rpmfusion-nonfree-fedora-$releasever
skip_if_unavailable=True

[rpmfusion-nonfree-nvidia-driver-debuginfo]
name=RPM Fusion for Fedora $releasever - Nonfree - NVIDIA Driver Debug
#baseurl=http://download1.rpmfusion.org/nonfree/fedora/nvidia-driver/$releasever/$basearch/debug/
metalink=https://mirrors.rpmfusion.org/metalink?repo=nonfree-fedora-nvidia-driver-debug-$releasever&arch=$basearch
enabled=0
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=file:///usr/share/distribution-gpg-keys/rpmfusion/RPM-GPG-KEY-rpmfusion-nonfree-fedora-$releasever
skip_if_unavailable=True

[rpmfusion-nonfree-nvidia-driver-source]
name=RPM Fusion for Fedora $releasever - Nonfree - NVIDIA Driver Source
#baseurl=http://download1.rpmfusion.org/nonfree/fedora/nvidia-driver/$releasever/SRPMS/
metalink=https://mirrors.rpmfusion.org/metalink?repo=nonfree-fedora-nvidia-driver-source-$releasever&arch=$basearch
enabled=0
type=rpm-md
gpgcheck=1
repo_gpgcheck=0
gpgkey=file:///usr/share/distribution-gpg-keys/rpmfusion/RPM-GPG-KEY-rpmfusion-nonfree-fedora-$releasever
skip_if_unavailable=True

I also had this and I think it is still one of the issues that the upgrade to libsolv-0.7.17-1.fc33 caused. Fortunately everything seams to be fixed now with the newest rpm-ostree-2021.1-4.fc33 version. I upgraded the OS, layered and overrode packages after upgrading to this version.

You can try to reset the image or remove nvidia packages and then try to upgrade (witch worked for some people) but I managed to upgrade to new deployment without doing that, by installing rpm-ostree-2021.1-4.fc33.x86_64.rpm and rpm-ostree-libs-2021.1-4.fc33.x86_64.rpm manually in usroverlay and then upgrading.

These commands worked for me:

> wget https://kojipkgs.fedoraproject.org//packages/rpm-ostree/2021.1/4.fc33/x86_64/rpm-ostree-2021.1-4.fc33.x86_64.rpm
> wget https://kojipkgs.fedoraproject.org//packages/rpm-ostree/2021.1/4.fc33/x86_64/rpm-ostree-libs-2021.1-4.fc33.x86_64.rpm
> sudo rpm-ostree usroverlay
> sudo rpm -Uvh ./rpm-ostree-2021.1-4.fc33.x86_64.rpm ./rpm-ostree-libs-2021.1-4.fc33.x86_64.rpm
> sudo systemctl restart rpm-ostreed.service
> rpm-ostree upgrade
> systemctl reboot

I hope this helps.

7 Likes

Thank you Arvydas!

I had this same problem and wasted some time earlier this week trying to find a solution. The commands you posted worked perfectly for me!

I was able to partially solve this problem by getting the latest commit:

$ sudo ostree pull fedora:fedora/33/x86_64/silverblue --commit-metadata-only --depth=10
$ sudo ostree log fedora:fedora/33/x86_64/silverblue

and then rebasing on that commit

$ rpm-ostree rebase $commit_id

However I still can’t fully get away from the whole libsolve/rpm-ostree bug. I 've written a write up to the developers here. Hope it will help resolve the issue.

Thank you, that worked!!