When building a snap and constructing a part, you commonly need to specify build and staging dependencies. These dependencies are listed in snapcraft.yaml within a part definition as either package names, or snap names, with the following metadata:
build-packages: packages required for the part to build
stage-packages: packages required to run the part
build-snaps: snaps required for the part to build.
stage-snaps: snaps required to run the part
Snaps are downloaded from the Snap Store and unpacked into the snap being built. If a specific channel is required, the syntax is of the form
<snap-name>/<channel> (see Channels for more details on the syntax).
For staged snaps, the
snap directories from the snap will be available as
snap.<snap-name> for cases where assets from those locations are desired for reuse.
The following is a typical example of a part’s build- and stage- sections for a command tool line thats interacts with git:
build-packages: - pkg-config - libreadline-dev - libncurses5-dev build-snaps: - go stage-snaps: - ffmpeg/latest/edge stage-packages: - git
Package dependencies are listed as package names for the snap’s build environment.
It’s also feasible to have a build environment built on Fedora for example, using Fedora packages, or those of your own host environment.
The packages you need are likely to be identical to those you need to either build your project (
build-packages) or install your project (
stage-packages). You’ll often find them listed in a project’s README.md, or alongside any build instructions.
Working out your project’s dependencies can be an iterative process, much like compiling a third-party package:
snapcraft --debuguntil you hit an error