Guidelines and HOWTOs/Snap
Want to run your application binaries on any Linux distribution? Snap makes that possible.
For general purpose information about snap, snapcraft and how to use them please have a look at their documentation https://docs.snapcraft.io
- Standalone Snap
- Shared Snap
Words you'll hear and not know what they mean:
- snap: The actual bundle format.
- snapd: The daemon that manages snap on a system.
- snapcraft: The build tool for building a snap.
- 'app: In the context of snapcraft/snapd this is the (portable) description of an 'exectuable' exposed to the outside (i.e. something snapd knows how to run).
- interfaces: A way for a snap to talk to the outside world (or another snaps). Split into slots and plugs. Each of which has their own security permissions as a client may need to be able to do different things from a server. https://docs.snapcraft.io/interface-management
- slot: The provider part of an interface. e.g. a kwin snap might have a wayland-client slot which exposes a way for clients to talk to kwin.
- plug: The client part of an interface. e.g. an application may plug into the wayland-client slot of kwin to talk to it.
- Core: A special snap containing the core aspects of any Linux OS (libc/libpthread/...). All snaps depend on exactly one core which provides the snap's understanding of what will be in "/" from the snap's POV. The core does not include a kernel! Kernels may be snaps.
- Content Snap: Special kind of snap that implements the "content" interface. It's kind of like a shared dependency between snaps allowing one snap to be bound into the scope of another snap. For example the KF5 content snap may be used to share all of KF5 across multiple snaps.
- Build Snap: Also a special kind of snap, it's the build-time variant of the Content Snap and contains header files etc. necessary to build against a Content Snap.