When `apt install firefox` actually installs a snap โ purging snap for good and moving to Flatpak
Environment: Kubuntu 26.04 LTS ยท KDE Plasma 6 ยท apt / snapd / Flatpak
TL;DR
On Ubuntu-based distros, the stock firefox apt package isn't the browser โ it's a transitional stub that pulls in snapd and the snap build of Firefox. So apt install firefox hands you a snap.
To rip snap out and move to Flatpak: (1) purge the snap packages, (2) pin snapd so it can't sneak back in as a dependency, (3) reinstall your apps from Flathub.
# 1) remove snap (the firefox snap + the transitional apt package)
sudo apt purge firefox snapd
# 2) block snapd from returning (pin priority -1)
# put these 3 lines in /etc/apt/preferences.d/nosnap.pref
# Package: snapd
# Pin: release a=*
# Pin-Priority: -1
# 3) Flatpak + Flathub
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install flathub org.mozilla.firefoxThe symptom
Fresh Kubuntu install, sudo apt install firefox to get a browser. It looked like an ordinary apt package went in, but what actually happened was snapd came up as a service and Firefox landed as a snap. All the usual snap friction showed up: slow cold starts, an isolated sandbox running separately from the system's apt, and update timing that marches to its own drum instead of apt's.
The misdiagnosis: "just remove the snap and reinstall via apt"
There's an easy trap here. "The snap build is the problem, so remove that and reinstall via apt to get a proper deb." I reached for that first too โ and it's wrong.
On Ubuntu-based distros, reinstalling the firefox apt package pulls snapd right back in as a dependency. That's precisely what the stub does, so removing the snap and reinstalling via apt just re-summons what you evicted a moment ago. Peeling off the surface (the snap instance) doesn't break the loop.
Root cause
It comes down to what the firefox apt package actually is. It's not a package containing the browser โ installing it installs snapd and pulls the snap build of Firefox. So:
apt install firefoxโ snapd installed + snap Firefox installed.- Remove only the snap Firefox โ the apt stub is still there, and snapd can re-enter at any point through a reinstall or dependency resolution.
In other words, the assumption "it came from apt, so it isn't a snap" simply doesn't hold on Ubuntu-based distros. The fix isn't a surface removal (deleting the snap instance) โ it has to go all the way to removing the stub and snapd itself and closing the re-entry path.
The fix
1) Remove snap completely
Purge the snap-related packages. After the user ran it, the snap command itself was gone and the snapd / snapd.socket / snapd.seeded services were all disabled.
sudo apt purge firefox snapd2) Blocking re-entry is the real crux
Purging alone isn't enough โ snapd can quietly reappear as another package's dependency. Pin snapd to priority -1 in /etc/apt/preferences.d/nosnap.pref (the same trick Linux Mint uses by default).
Package: snapd
Pin: release a=*
Pin-Priority: -1
With this in place, apt refuses to install snapd even if some package later asks for it as a dependency.
3) Switch to Flatpak
Add Flathub, install the backend so Flatpak apps show up in KDE Discover (the software center), and reinstall what you need from verified publishers.
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
sudo apt install plasma-discover-backend-flatpak
flatpak install flathub org.mozilla.firefox # publisher: Mozilla
flatpak install flathub org.telegram.desktop # publisher: Telegram FZ-LLC
flatpak install flathub md.obsidian.Obsidian # publisher: ObsidianFlatpak apps install either system-wide (/var/lib/flatpak/app/) or per-user (~/.local/share/flatpak/app/), launchers register automatically, and you update with flatpak update or Discover โ no hand-managing folders like a tarball install.
Verifying
What the user confirmed afterward:
- The
snapcommand was gone andsnapdwas disabled. /etc/apt/preferences.d/nosnap.prefwas still in place, andsnapnever reappeared afterward โ i.e. it holds without re-entry.flatpak listshowed firefox, telegram, and obsidian all as Flatpaks.
Loose ends right after the switch
- New K-menu icons didn't appear until a reboot/re-login โ
XDG_DATA_DIRShas to refresh for the new Flatpak launchers to register. - The freshly installed Flatpak Telegram needed a re-login (the old tar build's local session data had been deleted; the cloud messages themselves are unaffected).
- fcitx5 / fcitx5-hangul (the Korean input method) was unrelated to all this โ it had been a plain apt install from the start and wasn't affected.
Takeaways / checklist
- What
apt install firefoxactually installs depends on the distro and version. If you suspect a snap, confirm withsnap list. - Purging isn't enough to evict snap for good โ pin it low with
nosnap.prefto stop dependency re-entry (Mint already does this). - If new apps don't show in the K-menu after switching to Flatpak, check that a reboot/re-login has refreshed
XDG_DATA_DIRS.
Related
This came out of the first-boot setup right after installing Kubuntu 26.04 in a dual boot. One note: right after moving Firefox to Flatpak like this, a chain of problems followed โ starting with Firefox crashing on its very first launch, then NVIDIA and DRM issues โ each with its own cause. They're written up as separate posts, linked under "More in this series" below.