Apt

Manage apt packages and repositories.

apt.deb

Install/manage .deb file packages.

apt.deb(source, present=True, force=False)
  • source: filename or URL of the .deb file
  • present: whether or not the package should exist on the system
  • force: whether to force the package install by passing –force-yes to apt
Note:
When installing, apt-get install -f will be run to install any unmet dependencies.
URL sources with present=False:
If the .deb file isn’t downloaded, pyinfra can’t remove any existing package as the file won’t exist until mid-deploy.

apt.key

Add apt gpg keys with apt-key.

apt.key(key=None, keyserver=None, keyid=None)
  • key: filename or URL
  • keyserver: URL of keyserver to fetch key from
  • keyid: key identifier when using keyserver
Note:
Always returns an add command, not state checking.
keyserver/id:
These must be provided together.

apt.packages

Install/remove/upgrade packages & update apt.

apt.packages(
    packages=None, present=True, latest=False, update=False, cache_time=None, upgrade=False,
    force=False, no_recommends=False
)
  • packages: list of packages to ensure
  • present: whether the packages should be installed
  • latest: whether to upgrade packages without a specified version
  • update: run apt update
  • cache_time: when used with update, cache for this many seconds
  • upgrade: run apt upgrade
  • force: whether to force package installs by passing –force-yes to apt
  • no_recommends: don’t install recommended packages
Versions:
Package versions can be pinned like apt: <pkg>=<version>
Cache time:
When cache_time is set the /var/lib/apt/periodic/update-success-stamp file is touched upon successful update. Some distros already do this (Ubuntu), but others simply leave the periodic directory empty (Debian).

apt.ppa

Manage Ubuntu ppa repositories.

apt.ppa(name, present=True)
  • name: the PPA name (full ppa:user/repo format)
  • present: whether it should exist
Note:
requires apt-add-repository on the remote host

apt.repo

Manage apt repositories.

apt.repo(name, present=True, filename=None)
  • name: apt source string eg deb http://X hardy main
  • present: whether the repo should exist on the system
  • filename: optional filename to use /etc/apt/sources.list.d/<filename>.list. By default uses /etc/apt/sources.list.

apt.update

Updates apt repos.

apt.update(cache_time=None, touch_periodic=False)
  • cahce_time: cache updates for this many seconds
  • touch_periodic: touch /var/lib/apt/periodic/update-success-stamp after update

apt.upgrade

Upgrades all apt packages.

apt.upgrade()