Snap and Flatpak

Traditional packages (deb, rpm) are distro-specific. Snap and Flatpak are universal - install on any Linux.

The Problem with Traditional Packages

Developer creates app → packages for:

  • Ubuntu (.deb)
  • Fedora (.rpm)
  • Arch (.pkg.tar)
  • And many more...

Each distro has different library versions. Nightmare.

Snap (by Canonical)

Snaps bundle the app with all dependencies. Works on any distro with snapd.

Install Snap Support

Terminal
$sudo apt install snapd
(on Ubuntu, it's pre-installed)

Find and Install Snaps

Terminal
$snap find spotify
Name Version Publisher Summary spotify 1.2.13 spotify✓ Music for everyone
$
$sudo snap install spotify
spotify 1.2.13 from Spotify✓ installed

List Installed Snaps

Terminal
$snap list
Name Version Rev Tracking Publisher core20 20231123 2105 latest/stable canonical✓ firefox 120.0 3358 latest/stable mozilla✓ spotify 1.2.13 66 latest/stable spotify✓

Update Snaps

Terminal
$sudo snap refresh
(updates all snaps)
$sudo snap refresh spotify
(update specific snap)

Remove Snaps

Terminal
$sudo snap remove spotify
spotify removed

Snap Cons

  • Slower startup (sandbox overhead)
  • Larger file size (bundles dependencies)
  • Auto-updates (can't always control timing)
  • Loop devices clutter df output

Flatpak

Flatpak is similar but community-driven, not tied to Canonical.

Install Flatpak Support

Terminal
$sudo apt install flatpak
$
$# Add Flathub repository (main source)
$flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Find and Install Flatpaks

Terminal
$flatpak search gimp
Name Description Application ID GIMP GNU Image Manipulation Program org.gimp.GIMP
$
$flatpak install flathub org.gimp.GIMP
Installing: org.gimp.GIMP...

List Installed Flatpaks

Terminal
$flatpak list
Name Application ID Version Origin GIMP org.gimp.GIMP 2.10.36 flathub VLC org.videolan.VLC 3.0.20 flathub

Update Flatpaks

Terminal
$flatpak update
(updates all flatpaks)

Remove Flatpaks

Terminal
$flatpak uninstall org.gimp.GIMP

Snap vs Flatpak vs apt

FeatureaptSnapFlatpak
SpeedFastSlowerModerate
SizeSmallLargeLarge
SandboxedNoYesYes
Auto-updateNoYesOptional
DistroDebian/UbuntuAnyAny
Desktop appsSomeManyMany
CLI toolsYesYesFew

When to Use What

  • apt: System packages, CLI tools, server software
  • Snap/Flatpak: Desktop apps, especially proprietary ones (Spotify, Discord, Slack)
  • Flatpak: If you want more control over updates
Knowledge Check

What's the main advantage of Snap and Flatpak over traditional packages?

Quick Reference

Snap CommandPurpose
snap find nameSearch
snap install nameInstall
snap listList installed
snap refreshUpdate all
snap remove nameRemove
Flatpak CommandPurpose
flatpak search nameSearch
flatpak install repo idInstall
flatpak listList installed
flatpak updateUpdate all
flatpak uninstall idRemove

Key Takeaways

  • Snap and Flatpak are universal package formats
  • They bundle dependencies (larger but portable)
  • Snap: Ubuntu-focused, auto-updates
  • Flatpak: Community-driven, Flathub is the main repo
  • Use apt for system stuff, Snap/Flatpak for desktop apps
  • Both provide sandboxing for security

Next: when packages aren't enough - compiling from source.