Solving Flatpak's End-of-Life Runtime Warnings

If you’re a Linux user who relies on Flatpak for application management, you may have encountered persistent warnings about end-of-life runtimes. These can appear every time you run a Flatpak command, cluttering your terminal output and potentially hiding more important messages.

In my case, I kept seeing these warnings whenever running Flatpak operations (with Flatpak 1.14.5):

Info: (pinned) runtime org.kde.Platform branch 5.15-23.08 is end-of-life, with reason:
   We strongly recommend moving to the latest Qt 5.15-based stable version of the Platform and SDK

Info: (pinned) runtime org.gnome.Platform branch 46 is end-of-life, with reason:
   The GNOME 46 runtime is no longer supported as of April 17, 2025. Please ask your application developer to migrate to a supported platform.

The key insight here is the word “(pinned)” in the warnings. This indicates that Flatpak is keeping these runtimes at their current versions even though they’re outdated. But why are they pinned, and how do we unpin them?

Understanding the Issue

Flatpak uses runtime environments to provide common dependencies for applications. When these runtimes reach end-of-life (EOL), they should normally be updated or removed. However, sometimes they get “pinned,” meaning they’re explicitly kept at their current version.

There are several reasons why a runtime might be pinned:

  1. An application specifically requests that version
  2. You manually pinned it at some point
  3. A system update or migration pinned it for compatibility

Debugging the Problem

To solve this issue, I needed to first understand what exactly was happening. Here’s the systematic approach I took:

Step 1: Identify Which Applications Use These Runtimes

First, I checked which applications were using these specific runtime versions:

flatpak list --app --columns=application,runtime | grep -E "org.kde.Platform/|org.gnome.Platform/"

This showed me all the applications and their associated runtimes. Interestingly, none of my applications were specifically using the old runtime versions mentioned in the warnings.

Step 2: Examine the Installed Runtimes

Next, I needed to see which runtimes were actually installed:

flatpak list --runtime | grep -E "org.kde.Platform|org.gnome.Platform"

The output confirmed I had multiple versions installed, including the problematic ones:

GNOME Application Platform version 46    org.gnome.Platform        46      system
GNOME Application Platform version 47    org.gnome.Platform        47      system
GNOME Application Platform version 48    org.gnome.Platform        48      system
KDE Application Platform                org.kde.Platform        5.15-23.08    system
KDE Application Platform                org.kde.Platform        6.7    system
KDE Application Platform                org.kde.Platform        6.8    system
KDE Application Platform                org.kde.Platform        6.9    system
QGnomePlatform                          org.kde.PlatformTheme.QGnomePlatform    5.15-23.08    system

Step 3: Attempt to Update and Clean

A standard approach would be to update everything and remove unused components:

flatpak update --noninteractive --assumeyes

However, this didn’t solve the issue. The warnings persisted because the runtimes were pinned.

The Solution: Unpinning and Removing

After researching Flatpak’s documentation, I discovered the pin command that manages pinned runtimes. Here’s how I solved the problem:

Step 1: Unpin the Problematic Runtimes

I unpinned each of the outdated runtimes:

# Unpin KDE components
flatpak pin --remove runtime/org.kde.Platform/x86_64/5.15-23.08
flatpak pin --remove runtime/org.kde.Platform.Locale/x86_64/5.15-23.08
flatpak pin --remove runtime/org.kde.KStyle.Adwaita/x86_64/5.15-23.08

# Unpin GNOME components
flatpak pin --remove runtime/org.gnome.Platform/x86_64/46
flatpak pin --remove runtime/org.gnome.Platform.Locale/x86_64/46

Step 2: Remove Unused Runtimes

Once unpinned, I could remove the unused runtimes:

flatpak remove --unused

This command presented me with a list of runtimes to remove, including all the problematic ones:

ID                                                       Branch          Op
org.gnome.Platform                                       46              r
org.gnome.Platform.Locale                                46              r
org.freedesktop.Platform.openh264                        2.4.1           r
org.kde.KStyle.Adwaita                                   5.15-23.08      r
org.kde.Platform                                         5.15-23.08      r
org.kde.Platform.Locale                                  5.15-23.08      r
org.kde.PlatformTheme.QGnomePlatform                     5.15-23.08      r
org.kde.WaylandDecoration.QAdwaitaDecorations            5.15-23.08      r
org.kde.WaylandDecoration.QGnomePlatform-decoration      5.15-23.08      r

After confirming the removal, the warnings were finally gone!

Step 3: Verify the Fix

A quick verification showed that the warnings no longer appeared:

flatpak update --noninteractive

The output was clean - no more warnings!

Takeaways and Best Practices

This experience taught me several things about managing Flatpak installations:

  1. Understand Pinning: The Flatpak pinning feature is useful but can lead to outdated runtimes remaining on your system.

  2. Regular Maintenance: It’s good practice to periodically check for pinned runtimes using flatpak list --runtime and consider whether they can be unpinned.

  3. Keep Runtimes Updated: While application compatibility is important, keeping runtimes updated helps maintain security and performance.

  4. Use the Right Tools: Flatpak provides specialized commands like pin that aren’t obvious but are crucial for certain maintenance tasks.

Conclusion

Pinned runtimes in Flatpak can be a source of persistent warnings, but with the right approach, they’re relatively easy to resolve. By understanding the role of pinning in Flatpak and learning how to manage it, you can keep your system clean and warning-free.

Remember that while removing outdated runtimes is generally safe, always ensure that no applications depend on them before doing so. The --unused flag with flatpak remove helps ensure you’re only removing truly unused components.

Further Reading