# salt.modules.pacmanpkg

A module to wrap pacman calls, since Arch is the best (https://wiki.archlinux.org/index.php/Arch_is_the_best)

Important

If you feel that Salt should be using this module to manage packages on a minion, and it is using a different module (or gives an error similar to 'pkg.install' is not available), see here.

salt.modules.pacmanpkg.available_version(*names, **kwargs)

  This function is an alias of `latest_version`.

  > Return the latest version of the named package available for upgrade or installation. If more than one package name is specified, a dict of name/version pairs is returned.

  > If the latest version of a given package is already installed, an empty string will be returned for that package.

  > CLI Example:

  >     salt '*' pkg.latest_version <package name>
  >     salt '*' pkg.latest_version <package1> <package2> <package3> ...

salt.modules.pacmanpkg.file_dict(*packages, **kwargs)

  List the files that belong to a package, grouped by package. Not specifying any packages will return a list of _every_ file on the system's package database (not generally recommended).

  CLI Examples:

      salt '*' pkg.file_list httpd
      salt '*' pkg.file_list httpd postfix
      salt '*' pkg.file_list

salt.modules.pacmanpkg.file_list(*packages, **kwargs)

  List the files that belong to a package. Not specifying any packages will return a list of _every_ file on the system's package database (not generally recommended).

  CLI Examples:

      salt '*' pkg.file_list httpd
      salt '*' pkg.file_list httpd postfix
      salt '*' pkg.file_list

salt.modules.pacmanpkg.group_diff(name)

  New in version 2016.11.0.

  Lists which of a group's packages are installed and which are not installed

  Compatible with yumpkg.group_diff for easy support of state.pkg.group_installed

  CLI Example:

      salt '*' pkg.group_diff 'xorg'

salt.modules.pacmanpkg.group_info(name)

  New in version 2016.11.0.

  Lists all packages in the specified group

  CLI Example:

      salt '*' pkg.group_info 'xorg'

salt.modules.pacmanpkg.group_list()

  New in version 2016.11.0.

  Lists all groups known by pacman on this system

  CLI Example:

      salt '*' pkg.group_list

salt.modules.pacmanpkg.install(name=None, refresh=False, sysupgrade=None, pkgs=None, sources=None, **kwargs)

  Changed in version 2015.8.12,2016.3.3,2016.11.0: On minions running systemd>=205, systemd-run(1) is now used to isolate commands which modify installed packages from the `salt-minion` daemon's control group. This is done to keep systemd from killing any pacman commands spawned by Salt when the `salt-minion` service is restarted. (see `KillMode` in the systemd.kill(5) manpage for more information). If desired, usage of systemd-run(1) can be suppressed by setting a `config option` called `systemd.scope`, with a value of `False` (no quotes).

  Install (`pacman -S`) the specified packag(s). Add `refresh=True` to install with `-y`, add `sysupgrade=True` to install with `-u`.

  name

    The name of the package to be installed. Note that this parameter is ignored if either `pkgs` or `sources` is passed. Additionally, please note that this option can only be used to install packages from a software repository. To install a package file manually, use the `sources` option.

    CLI Example:

        salt '*' pkg.install <package name>

  refresh

    Whether or not to refresh the package database before installing.

  sysupgrade

    Whether or not to upgrade the system packages before installing. If refresh is set to `True` but sysupgrade is not specified, `-u` will be applied

  Multiple Package Installation Options:

  pkgs

    A list of packages to install from a software repository. Must be passed as a python list. A specific version number can be specified by using a single-element dict representing the package and its version. As with the `version` parameter above, comparison operators can be used to target a specific version of a package.

    CLI Examples:

        salt '*' pkg.install pkgs='["foo", "bar"]'
        salt '*' pkg.install pkgs='["foo", {"bar": "1.2.3-4"}]'
        salt '*' pkg.install pkgs='["foo", {"bar": "<1.2.3-4"}]'

  sources

    A list of packages to install. Must be passed as a list of dicts, with the keys being package names, and the values being the source URI or local path to the package.

    CLI Example:

        salt '*' pkg.install                 sources='[{"foo": "salt://foo.pkg.tar.xz"},                 {"bar": "salt://bar.pkg.tar.xz"}]'

  Returns a dict containing the new package names and versions:

      {'<package>': {'old': '<old-version>',
                     'new': '<new-version>'}}

salt.modules.pacmanpkg.latest_version(*names, **kwargs)

  Return the latest version of the named package available for upgrade or installation. If more than one package name is specified, a dict of name/version pairs is returned.

  If the latest version of a given package is already installed, an empty string will be returned for that package.

  CLI Example:

      salt '*' pkg.latest_version <package name>
      salt '*' pkg.latest_version <package1> <package2> <package3> ...

salt.modules.pacmanpkg.list_pkgs(versions_as_list=False, **kwargs)

  List the packages currently installed as a dict:

      {'<package_name>': '<version>'}

  CLI Example:

      salt '*' pkg.list_pkgs

salt.modules.pacmanpkg.list_repo_pkgs(*args, **kwargs)

  Returns all available packages. Optionally, package names (and name globs) can be passed and the results will be filtered to packages matching those names.

  This function can be helpful in discovering the version or repo to specify in a `pkg.installed` state.

  The return data will be a dictionary mapping package names to a list of version numbers, ordered from newest to oldest. If `byrepo` is set to `True`, then the return dictionary will contain repository names at the top level, and each repository will map packages to lists of version numbers. For example:

      # With byrepo=False (default)
      {
          'bash': ['4.4.005-2'],
          'nginx': ['1.10.2-2']
      }
      # With byrepo=True
      {
          'core': {
              'bash': ['4.4.005-2']
          },
          'extra': {
              'nginx': ['1.10.2-2']
          }
      }

  fromrepoNone

    Only include results from the specified repo(s). Multiple repos can be specified, comma-separated.

  byrepoFalse

    When `True`, the return data for each package will be organized by repository.

  refreshFalse

    When `True`, the package database will be refreshed (i.e. `pacman -Sy`) before checking for available versions.

  CLI Examples:

      salt '*' pkg.list_repo_pkgs
      salt '*' pkg.list_repo_pkgs foo bar baz
      salt '*' pkg.list_repo_pkgs 'samba4*' fromrepo=base,updates
      salt '*' pkg.list_repo_pkgs 'python2-*' byrepo=True

salt.modules.pacmanpkg.list_upgrades(refresh=False, root=None, **kwargs)

  List all available package upgrades on this system

  CLI Example:

      salt '*' pkg.list_upgrades

salt.modules.pacmanpkg.owner(*paths, **kwargs)

  New in version 2014.7.0.

  Return the name of the package that owns the file. Multiple file paths can be passed. Like `pkg.version`, if a single path is passed, a string will be returned, and if multiple paths are passed, a dictionary of file/package name pairs will be returned.

  If the file is not owned by a package, or is not present on the minion, then an empty string will be returned for that path.

  CLI Example:

      salt '*' pkg.owner /usr/bin/apachectl
      salt '*' pkg.owner /usr/bin/apachectl /usr/bin/zsh

salt.modules.pacmanpkg.purge(name=None, pkgs=None, **kwargs)

  Changed in version 2015.8.12,2016.3.3,2016.11.0: On minions running systemd>=205, systemd-run(1) is now used to isolate commands which modify installed packages from the `salt-minion` daemon's control group. This is done to keep systemd from killing any pacman commands spawned by Salt when the `salt-minion` service is restarted. (see `KillMode` in the systemd.kill(5) manpage for more information). If desired, usage of systemd-run(1) can be suppressed by setting a `config option` called `systemd.scope`, with a value of `False` (no quotes).

  Recursively remove a package and all dependencies which were installed with it, this will call a `pacman -Rsc`

  name

    The name of the package to be deleted.

  Multiple Package Options:

  pkgs

    A list of packages to delete. Must be passed as a python list. The `name` parameter will be ignored if this option is passed.

  New in version 0.16.0.

  Returns a dict containing the changes.

  CLI Example:

      salt '*' pkg.purge <package name>
      salt '*' pkg.purge <package1>,<package2>,<package3>
      salt '*' pkg.purge pkgs='["foo", "bar"]'

salt.modules.pacmanpkg.refresh_db(root=None, **kwargs)

  Just run a `pacman -Sy`, return a dict:

      {'<database name>': Bool}

  CLI Example:

      salt '*' pkg.refresh_db

salt.modules.pacmanpkg.remove(name=None, pkgs=None, **kwargs)

  Changed in version 2015.8.12,2016.3.3,2016.11.0: On minions running systemd>=205, systemd-run(1) is now used to isolate commands which modify installed packages from the `salt-minion` daemon's control group. This is done to keep systemd from killing any pacman commands spawned by Salt when the `salt-minion` service is restarted. (see `KillMode` in the systemd.kill(5) manpage for more information). If desired, usage of systemd-run(1) can be suppressed by setting a `config option` called `systemd.scope`, with a value of `False` (no quotes).

  Remove packages with `pacman -R`.

  name

    The name of the package to be deleted.

  Multiple Package Options:

  pkgs

    A list of packages to delete. Must be passed as a python list. The `name` parameter will be ignored if this option is passed.

  New in version 0.16.0.

  Returns a dict containing the changes.

  CLI Example:

      salt '*' pkg.remove <package name>
      salt '*' pkg.remove <package1>,<package2>,<package3>
      salt '*' pkg.remove pkgs='["foo", "bar"]'

salt.modules.pacmanpkg.upgrade(refresh=False, root=None, **kwargs)

  Changed in version 2015.8.12,2016.3.3,2016.11.0: On minions running systemd>=205, systemd-run(1) is now used to isolate commands which modify installed packages from the `salt-minion` daemon's control group. This is done to keep systemd from killing any pacman commands spawned by Salt when the `salt-minion` service is restarted. (see `KillMode` in the systemd.kill(5) manpage for more information). If desired, usage of systemd-run(1) can be suppressed by setting a `config option` called `systemd.scope`, with a value of `False` (no quotes).

  Run a full system upgrade, a pacman -Syu

  refresh

    Whether or not to refresh the package database before installing.

  Returns a dictionary containing the changes:

      {'<package>':  {'old': '<old-version>',
                      'new': '<new-version>'}}

  CLI Example:

      salt '*' pkg.upgrade

salt.modules.pacmanpkg.upgrade_available(name, **kwargs)

  Check whether or not an upgrade is available for a given package

  CLI Example:

      salt '*' pkg.upgrade_available <package name>

salt.modules.pacmanpkg.version(*names, **kwargs)

  Returns a string representing the package version or an empty string if not installed. If more than one package name is specified, a dict of name/version pairs is returned.

  CLI Example:

      salt '*' pkg.version <package name>
      salt '*' pkg.version <package1> <package2> <package3> ...