The most opinionated package manager in Linux. Also the most battle-tested.
GitHub RepoImpressions272

The most opinionated package manager in Linux. Also the most battle-tested.

@githubprojectsPost Author

Project Description

View on GitHub

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.

Back to Projects
Project ID: 5118009f-9dfd-447f-88e9-5d82882b832dLast updated: May 21, 2026 at 05:39 PM