Fedora Silverblue 39 No Available Upgrade Despite rpm-ostree upgrade --preview Reports Available Updates

Today I run rpm-ostree upgrade --preview first, the output is

AvailableUpdate:
Upgraded: glibc-devel 2.38-11.fc39 → 2.38-14.fc39
glibc-headers-x86 2.38-11.fc39 → 2.38-14.fc39
glibc-langpack-en 2.38-11.fc39 → 2.38-14.fc39

Then I run rpm-ostree upgrade, but it says no upgrade available.

I am pretty sure glibc-devel is installed on my system, run rpm-qa | grep 'glibc-devel', the output shows

glibc-devel-2.38-11.fc39.x86_64

Is it because mirrors haven’t be synced yet?

What does rpm-ostree status show? You may have the upgrade already pending.

1 Like
Note: --check and --preview may be unreliable.  See https://github.com/coreos/rpm-ostree/issues/1579

This message is printed every time you run rpm-ostree upgrade --preview.

The output of rpm-ostree status is

❯ rpm-ostree status
State: idle
Deployments:
● fedora:fedora/39/x86_64/silverblue
                  Version: 39.20231205.0 (2023-12-05T00:55:28Z)
               BaseCommit: ae1afb462f69a9170bdfa24ef9fc3059b2366480c4fbcfac2a15c0fc65487d8a
             GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C
          LayeredPackages: autoconf binutils clang cmake distrobox emacs fuse-sshfs gcc glances htop isync keyd konsole
                           langpacks-en libtool lynx make msmtp neofetch neovim notmuch terminator tilix tmux vim zsh

  fedora:fedora/39/x86_64/silverblue
                  Version: 39.20231205.0 (2023-12-05T00:55:28Z)
               BaseCommit: ae1afb462f69a9170bdfa24ef9fc3059b2366480c4fbcfac2a15c0fc65487d8a
             GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C
          LayeredPackages: autoconf binutils clang cmake distrobox emacs fuse-sshfs gcc glances htop isync keyd konsole
                           langpacks-en libtool lynx make msmtp neofetch neovim notmuch terminator tilix tmux vim zsh

The output of rpm-ostree upgrade --preview is:

AvailableUpdate:
       Upgraded: gcc 13.2.1-4.fc39 -> 13.2.1-6.fc39
                 gcc-c++ 13.2.1-4.fc39 -> 13.2.1-6.fc39
                 glibc-devel 2.38-11.fc39 -> 2.38-14.fc39
                 glibc-headers-x86 2.38-11.fc39 -> 2.38-14.fc39
                 glibc-langpack-en 2.38-11.fc39 -> 2.38-14.fc39
                 libgccjit 13.2.1-4.fc39 -> 13.2.1-6.fc39
                 libstdc++-devel 13.2.1-4.fc39 -> 13.2.1-6.fc39

I did see the message, but I don’t think --preview is printing wrong information here. I did a search on the fedora package repository, and it seems that versions of packages output by --preview are correct.

Or maybe the newer versions of packages are created in the repo, but there is no new deployment of Silverblue?

I have done some searching and I think maybe you are right.

According to this post:

And these related github issues:

The --preview feature shows available upgrades for both base image and layer packages. I guess what’s happening here is all the available upgrade information I got are related to layered packages, but there is no new base images built. So when I run rpm-ostree upgrade, it says no upgrades available. I could be wrong since these posts and issues are not very new.

I am also very curious about this design choice. Is there any reason why the layered packages cannot be upgraded separately?

In the first github issue:

Unfortunately, the way --preview works, there’s a bit of “guessing” when it comes to layered packages. It will alert for changes if any layered packages have newer versions in the fetched metadata, but it doesn’t actually do any depsolving.

So e.g. if you have pkg-a installed which pulls in pkg-b at a specific version, a newer version of pkg-b will show up as an available update regardless of whether it’d actually be pulled in (e.g. if pkg-a has a tight binding on the version of pkg-b, it won’t).

We could resolve dependencies in the case where we already have the base layer (as is the case in your output, since there isn’t a new OSTree commit available), but the problem would still exist if we don’t.

Take gcc as an example, I suspect no upgrade available because clang 17.0.4-1.fc39 needs older version (clang 17.0.6-1.fc39 is still in testing).

OK. I just checked the dependency of several packages involved here.

Output of rpm -qR clang

clang-libs(x86-64) = 17.0.4-1.fc39
gcc-c++
libLLVM-17.so()(64bit)
libLLVM-17.so(LLVM_17)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.32)(64bit)
libc.so.6(GLIBC_2.34)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libclang-cpp.so.17()(64bit)
libstdc++-devel
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.21)(64bit)
libstdc++.so.6(GLIBCXX_3.4.29)(64bit)
libstdc++.so.6(GLIBCXX_3.4.30)(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsZstd) <= 5.4.18-1
rtld(GNU_HASH)

Output of rpm -qR gcc-c++

gcc = 13.2.1-4.fc39
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.10)(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.17)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.25)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.32)(64bit)
libc.so.6(GLIBC_2.33)(64bit)
libc.so.6(GLIBC_2.34)(64bit)
libc.so.6(GLIBC_2.35)(64bit)
libc.so.6(GLIBC_2.36)(64bit)
libc.so.6(GLIBC_2.38)(64bit)
libc.so.6(GLIBC_2.6)(64bit)
libc.so.6(GLIBC_2.9)(64bit)
libgmp.so.10()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libmpc.so.3()(64bit)
libmpfr.so.6()(64bit)
libstdc++ = 13.2.1-4.fc39
libstdc++-devel = 13.2.1-4.fc39
libstdc++.so.6()(64bit)
libz.so.1()(64bit)
libzstd.so.1()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsZstd) <= 5.4.18-1
rtld(GNU_HASH)

Output of rpm -qR gcc

/usr/bin/sh
binutils >= 2.31
cpp = 13.2.1-4.fc39
glibc-devel >= 2.2.90-12
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.17)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.25)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.2)(64bit)
libc.so.6(GLIBC_2.3.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.32)(64bit)
libc.so.6(GLIBC_2.33)(64bit)
libc.so.6(GLIBC_2.34)(64bit)
libc.so.6(GLIBC_2.35)(64bit)
libc.so.6(GLIBC_2.36)(64bit)
libc.so.6(GLIBC_2.38)(64bit)
libc.so.6(GLIBC_2.9)(64bit)
libgcc >= 13.2.1-4.fc39
libgmp.so.10()(64bit)
libgomp = 13.2.1-4.fc39
libgomp.so.1()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libmpc.so.3()(64bit)
libmpfr.so.6()(64bit)
libz.so.1()(64bit)
libzstd.so.1()(64bit)
make
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsZstd) <= 5.4.18-1
rtld(GNU_HASH)

It seems that clang is depending on these packages, although I feel like some of the dependency is not on a specific version.

Is there a way to get these packages upgraded? Do I need to wait for the new clang is pushed to the repository?

I think you need to wait for the clang upgrade. However, you can install the new version using rpm-ostree override replace:

rpm-ostree override replace https://bodhi.fedoraproject.org/updates/FEDORA-2023-1c6b112a75

This method forces rpm-ostree to install a specific version, whether it’s older or newer.

OK, thanks for your answers. I feel like I can uninstall some of the layered packages since I have figured out how to use toolbox after using Silverblue for a while.

I’ve got two more questions.

  1. Is there a way to list all installed packages in the base image (excluding layered packages)?
  2. Where can I check if there is a newly built base image?

I Just switched to Silverblue earlier this week and so far I love it,but I also have this problem.

$ rpm-ostree status
State: idle
Deployments:
● fedora:fedora/39/x86_64/silverblue
                  Version: 39.20231205.0 (2023-12-05T00:55:28Z)
               BaseCommit: ae1afb462f69a9170bdfa24ef9fc3059b2366480c4fbcfac2a15c0fc65487d8a
             GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C
          LayeredPackages: distrobox gstreamer1-plugin-openh264 langpacks-en

  fedora:fedora/39/x86_64/silverblue
                  Version: 39.20231205.0 (2023-12-05T00:55:28Z)
               BaseCommit: ae1afb462f69a9170bdfa24ef9fc3059b2366480c4fbcfac2a15c0fc65487d8a
             GPGSignature: Valid signature by E8F23996F23218640CB44CBE75CF5AC418B8E74C
          LayeredPackages: distrobox dvdbackup gstreamer1-plugin-openh264 langpacks-en

$ rpm-ostree upgrade --preview
1 metadata, 0 content objects fetched; 592 B transferred in 1 seconds; 0 bytes content written
Enabled rpm-md repositories: fedora-cisco-openh264 updates fedora updates-archive
Updating metadata for 'fedora-cisco-openh264'... done
Updating metadata for 'updates'... done
Updating metadata for 'fedora'... done
Updating metadata for 'updates-archive'... done
Importing rpm-md... done
rpm-md repo 'fedora-cisco-openh264'; generated: 2023-03-14T10:57:01Z solvables: 4
rpm-md repo 'updates'; generated: 2023-12-08T01:31:05Z solvables: 15482
rpm-md repo 'fedora'; generated: 2023-11-01T00:12:39Z solvables: 70825
rpm-md repo 'updates-archive'; generated: 2023-12-08T01:19:25Z solvables: 15750
Note: --check and --preview may be unreliable.  See https://github.com/coreos/rpm-ostree/issues/1579
AvailableUpdate:
       Upgraded: glibc-langpack-en 2.38-11.fc39 -> 2.38-14.fc39

I currently only have 3 packages layered,and for the past few days gnome software keeps telling me to restart/update. I have even tried running rpm-ostree upgrade manually but glibc-langpack-en never changes.

I’m having this same issue.

Same.

Why do I even have langpacks-en layered?

My only layered items (aside from this) are:

nvme-cli
syncthing

Does this have anything to do with me removing distro Firefox?

The langpack is layered automatically by GNOME Software. It seems that Software has a similar issue to rpm-ostree --preview where updates to layered packages are offered that aren’t compatible with the base image.

In this case, the cause appears to be that Silverblue images haven’t been getting published for the past few days, so the matching glibc isn’t available.

1 Like

You can use:

rpm-ostree db list fedora:fedora/39/x86_64/silverblue

Normally, you can just try upgrading. I sometimes look at the compose logs, e.g.: https://kojipkgs.fedoraproject.org/compose/updates/Fedora-39-updates-20231208.0/logs/x86_64/Everything/ostree-1/create-ostree-repo.log

That image doesn’t seem to have been published (nor the previous two).

1 Like

Thanks for the information! I also figured out the problem may be due to the glibc version in the base image.
BTW, I also had the langpacks-en layered, but I uninstalled it this morning with rpm-ostree uninstall langpacks-en, should I install it back?

If you’re already layering other packages, it wouldn’t hurt to bring it back. See also: