Skip to main content

Dependencies

PackageDependencies specifies dependency information for a particular package. This includes dependencies for runtime, which will be installed along with the package by the package manager, as well as any dependencies needed to build and/or test the resulting package. Configuration for any additional package repositories which are required may also be added here.

Fields

  • Build: The list of packages required to build the package.

    build:
    package_name:
    version: [">=1.0.0", "<2.0.0"]
    arch: ["amd64", "arm64"]
  • Runtime: The list of packages required to install/run the package.

    runtime:
    package_name:
    version: [">=1.0.0", "<2.0.0"]
    arch: ["amd64", "arm64"]
  • Recommends: The list of packages recommended to install with the generated package.

    recommends:
    package_name:
    version: [">=1.0.0", "<2.0.0"]
    arch: ["amd64", "arm64"]
note

Each of the above fields is a list of PackageConstraints.

  • Test: Lists and extra packages required for running tests. These are only installed for tests which have steps that require running a command in the built container. See TestSpec for more information

    test:
    - package_name_1
    - package_name_2
  • ExtraRepos: Used to inject extra package repositories that may be used to satisfy package dependencies in various stages.

    extra_repos:
    - keys:
    mykey:
    http:
    URL: "https://example.com/mykey.gpg"
    permissions: 0644
    config:
    myrepo:
    http:
    url: "https://example.com/myrepo.list"
    data:
    - dest: "/path/to/dest"
    spec: source
    envs: ["build", "test", "install"]

    See repositories for more details on repository configs.

Example

dependencies:
build:
gcc:
version: [">=9.0.0"]
arch: ["amd64"]
runtime:
libc6:
version: [">=2.29"]
recommends:
curl:
version: [">=7.68.0"]
test:
- bats
extra_repos:
- keys:
mykey:
http:
url: "https://example.com/mykey.gpg"
permissions: 0644
config:
myrepo:
http:
url: "https://example.com/myrepo.list"
# this assumes that a build context named `my-local-repo` containing a local repository will be passed
# to the Dalec build.
# /opt/repo can now be referenced as a local repository in a repository config imported to dalec
data:
- dest: "/opt/repo"
spec:
context:
name: "my-local-repo"
envs: ["build", "install"]