Snapd: The Most Opinionated (and Battle-Tested) Package Manager in Linux
If you’ve ever dealt with package hell on Linux — mismatched libraries, broken dependencies, or version conflicts — you’ve probably wished for something simpler. That’s exactly what Snapd tries to solve. It’s the daemon behind Snap packages, and it’s been around long enough to earn the title “most battle-tested” package manager in the ecosystem. But it’s also the most opinionated: snaps are self-contained, sandboxed, and auto-updating. Love it or hate it, it’s used by millions of devices, from Ubuntu desktops to IoT gadgets.
What It Does
Snapd is the background service that manages Snap packages. Snaps are application bundles that include everything an app needs to run: the binary, libraries, configs, and even a filesystem. They’re isolated from the rest of the system using AppArmor and seccomp policies. When you install a snap, snapd downloads the compressed image, mounts it into a loop device, and runs it in a confined environment. Updates happen automatically in the background, and rollbacks are trivial if something breaks. Think of it as a way to get fresh software on older distros without compile hell.
Why It’s Cool
The most obvious feature is isolation. Snaps don’t depend on system libraries, so you can run an app that needs Python 3.12 on a distro stuck with Python 3.6. But the real cleverness is in the update mechanism: snapd uses deltas for updates (only downloading changed blocks), and it keeps multiple versions of an app around. If an update crashes, you can roll back to the previous version instantly. No more “sudo apt-get install fix-broken-package”.
Another cool bit is that snaps support “channels” — like stable, beta, or edge. This lets developers push bleeding-edge builds to testers without affecting stable users. And because snaps are confined, you can run conflicting versions of the same app (like Docker CE and Podman) side by side.
Oh, and it works across distros. Snap is not Ubuntu-only. It runs on Fedora, Arch, Debian, and even some Raspberry Pi OS variants. That cross-distro compatibility is a big deal for developers who need to ship the same app to everyone.
How to Try It
If you’re on Ubuntu 20.04+, snapd comes preinstalled. For other distros:
Debian/Ubuntu
sudo apt install snapd
Fedora
sudo dnf install snapd
Arch
sudo pacman -S snapd
After installing, enable the snap socket:
sudo systemctl enable --now snapd.socket
Then try a simple snap:
sudo snap install hello-world
snap run hello-world
That prints a classic message. For something real, install VS Code, Spotify, or even a full LAMP stack. The Snap Store has thousands of applications.
Final Thoughts
Snapd is one of those tools that sparks strong opinions. Some people love the convenience of auto-updates and sandboxing. Others hate the disk usage (snaps are larger) or the fact that updates can break workflows. But for developers shipping software across multiple Linux distributions, it’s hard to beat the simplicity. You build once, bundle everything, and your app works on Ubuntu, Fedora, and Arch without users needing to install dependencies. If you’ve ever had a user say “it works on my machine but not on yours,” snapd is worth a look.
Found this interesting? Follow us at @githubprojects for more developer tools and open source deep dives.
Repository: https://github.com/canonical/snapd