Skip to content

pkg Operations

Manage BSD packages and repositories. Note that BSD package names are case-sensitive.

Facts used in these operations: server.Arch, files.File, server.Os, server.OsVersion, pkg.PkgPackages, server.Which.

pkg.packages

Install/remove/update pkg packages. This will use pkg ... where available (FreeBSD) and the pkg_* variants elsewhere.

pkg.packages(packages: 'str | list[str] | None' = None, present=True, pkg_path: 'str | None' = None,
         **kwargs,
    )
  • packages: list of packages to ensure
  • present: whether the packages should be installed
  • pkg_path: the PKG_PATH environment variable to set

pkg_path: By default this is autogenerated as follows (tested/working for OpenBSD): http://ftp.<OS>.org/pub/<OS>/<VERSION>/packages/<ARCH>/. Note that OpenBSD's official mirrors only hold the latest two versions packages.

NetBSD/FreeBSD helpfully use their own directory structures, so the default won't
work.

Example:

from pyinfra.operations import pkg
pkg.packages(
    name="Install Vim and Vim Addon Manager",
    packages=["vim-addon-manager", "vim"],
)

Global arguments

This operation also inherits all global arguments.