Bases¶
Snaps declare a base in their project file. The base defines the feature set used by
Snapcraft, the snapcraft.yaml schema, the environment where the snap is built,
and which base snap is used at runtime.
Base snaps¶
There are six supported base snaps:
Name |
Description |
Latest snapcraft track with support |
|---|---|---|
built from Ubuntu 24.04 LTS |
8.x |
|
built from Ubuntu 22.04 LTS |
8.x |
|
built from Ubuntu 20.04 LTS |
8.x |
|
built from Ubuntu 18.04 ESM |
7.x |
|
built from Ubuntu 16.04 ESM, not to be confused with core16 (see below) |
4.x |
|
an empty base that’s useful with fully statically linked snaps and when testing |
8.x |
Older releases of core were occasionally referred to as core 16, but core
and core16 are two distinct packages.
Warning
core16 is not a supported base. With no stable release, its beta and candidate releases are classed as experimental.
See Snapcraft and ESM for details bases built from ESM releases.
base¶
The base key in a project file:
defines the feature set used by Snapcraft
the
snapcraft.yamlschemathe environment where the snap is built if
build-baseis not definedand which base snap is used at runtime
base must be defined except for base, snapd, and kernel snaps.
base must be a supported base.
build-base¶
The build-base key defines the environment where the snap will be
built.
build-base can only be defined for the following scenarios:
Bare base snaps¶
build-base must be a supported base when
base: bare is defined.
Devel builds¶
build-base must be devel when base is unstable.
Unstable means that the base snap has not been released to the stable
channel.
Snaps with a devel build base must have a grade of devel and cannot
be promoted to stable or candidate channels.
Kernel snaps¶
build-base must be a supported base when
type: kernel is defined.
See How to build a kernel snap for details on how to
use build-base for kernel snaps.