# salt.modules.ebuildpkg

Support for Portage

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.

optdepends:

  - portage Python adapter

For now all package names MUST include the package category, i.e. `'vim'` will not work, `'app-editors/vim'` will.

salt.modules.ebuildpkg.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.

  CLI Example:

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

salt.modules.ebuildpkg.check_db(*names, **kwargs)

  Added in version 0.17.0.

  Returns a dict containing the following information for each specified package:

  1. A key `found`, which will be a boolean value denoting if a match was found in the package database.

  2. If `found` is `False`, then a second key called `suggestions` will be present, which will contain a list of possible matches. This list will be empty if the package name was specified in `category/pkgname` format, since the suggestions are only intended to disambiguate ambiguous package names (ones submitted without a category).

  CLI Examples:

      salt '*' pkg.check_db <package1> <package2> <package3>

salt.modules.ebuildpkg.check_extra_requirements(pkgname, pkgver)

  Check if the installed package already has the given requirements.

  CLI Example:

      salt '*' pkg.check_extra_requirements 'sys-devel/gcc' '~>4.1.2:4.1::gentoo[nls,fortran]'

salt.modules.ebuildpkg.depclean(name=None, slot=None, fromrepo=None, pkgs=None)

  Portage has a function to remove unused dependencies. If a package is provided, it will only removed the package if no other package depends on it.

  name

    The name of the package to be cleaned.

  slot

    Restrict the remove to a specific slot. Ignored if `name` is None.

  fromrepo

    Restrict the remove to a specific slot. Ignored if `name` is None.

  pkgs

    Clean multiple packages. `slot` and `fromrepo` arguments are ignored if this argument is present. Must be passed as a python list.

  Return a list containing the removed packages:

  CLI Example:

      salt '*' pkg.depclean <package name>

salt.modules.ebuildpkg.ex_mod_init(low)

  If the config option `ebuild.enforce_nice_config` is set to True, this module will enforce a nice tree structure for /etc/portage/package.* configuration files.

  Added in version 0.17.0: Initial automatic enforcement added when pkg is used on a Gentoo system.

  Changed in version 2014.7.0: Configure option added to make this behaviour optional, defaulting to off.

  See also

  `ebuild.ex_mod_init` is called automatically when a state invokes a pkg state on a Gentoo system. `salt.states.pkg.mod_init()`

  `ebuild.ex_mod_init` uses `portage_config.enforce_nice_config` to do the lifting. `salt.modules.portage_config.enforce_nice_config()`

  CLI Example:

      salt '*' pkg.ex_mod_init

salt.modules.ebuildpkg.install(name=None, refresh=False, pkgs=None, sources=None, slot=None, fromrepo=None, uses=None, binhost=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 emerge 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 the passed package(s), add refresh=True to sync the portage tree before package is installed.

  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 emerge a package from the portage tree. To install a tbz2 package manually, use the "sources" option described below.

    CLI Example:

        salt '*' pkg.install <package name>

  refresh

    Whether or not to sync the portage tree before installing.

  version

    Install a specific version of the package, e.g. 1.0.9-r1. Ignored if "pkgs" or "sources" is passed.

  slot

    Similar to version, but specifies a valid slot to be installed. It will install the latest available version in the specified slot. Ignored if "pkgs" or "sources" or "version" is passed.

    CLI Example:

        salt '*' pkg.install sys-devel/gcc slot='4.4'

  fromrepo

    Similar to slot, but specifies the repository from the package will be installed. It will install the latest available version in the specified repository. Ignored if "pkgs" or "sources" or "version" is passed.

    CLI Example:

        salt '*' pkg.install salt fromrepo='gentoo'

  uses

    Similar to slot, but specifies a list of use flag. Ignored if "pkgs" or "sources" or "version" is passed.

    CLI Example:

        salt '*' pkg.install sys-devel/gcc uses='["nptl","-nossp"]'

  Multiple Package Installation Options:

  pkgs

    A list of packages to install from the portage tree. Must be passed as a python list.

    CLI Example:

        salt '*' pkg.install pkgs='["foo","bar","~category/package:slot::repository[use]"]'

  sources

    A list of tbz2 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.tbz2"},{"bar": "salt://bar.tbz2"}]'

  binhost

    has two options try and force. try - tells emerge to try and install the package from a configured binhost. force - forces emerge to install the package from a binhost otherwise it fails out.

  Returns a dict containing the new package names and versions:

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

salt.modules.ebuildpkg.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.

  CLI Example:

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

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

  List the packages currently installed in a dict:

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

  CLI Example:

      salt '*' pkg.list_pkgs

salt.modules.ebuildpkg.list_upgrades(refresh=True, backtrack=3, **kwargs)

  List all available package upgrades.

  refresh

    Whether or not to sync the portage tree before checking for upgrades.

  backtrack

    Specifies an integer number of times to backtrack if dependency calculation fails due to a conflict or an unsatisfied dependency (default: ´3´).

    Added in version 2015.8.0.

  CLI Example:

      salt '*' pkg.list_upgrades

salt.modules.ebuildpkg.porttree_matches(name)

  Returns a list containing the matches for a given package name from the portage tree. Note that the specific version of the package will not be provided for packages that have several versions in the portage tree, but rather the name of the package (i.e. "dev-python/paramiko").

salt.modules.ebuildpkg.purge(name=None, slot=None, fromrepo=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 emerge 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).

  Portage does not have a purge, this function calls remove followed by depclean to emulate a purge process

  name

    The name of the package to be deleted.

  slot

    Restrict the remove to a specific slot. Ignored if name is None.

  fromrepo

    Restrict the remove to a specific slot. Ignored if `name` is None.

  Multiple Package Options:

  pkgs

    Uninstall multiple packages. `slot` and `fromrepo` arguments are ignored if this argument is present. Must be passed as a python list.

  Added in version 0.16.0.

  Returns a dict containing the changes.

  CLI Example:

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

salt.modules.ebuildpkg.refresh_db(**kwargs)

  Update the portage tree using the first available method from the following list:

  - emaint sync

  - eix-sync

  - emerge-webrsync

  - emerge --sync

  To prevent the portage tree from being synced within one day of the previous sync, add the following pillar data for this minion:

      portage:
        sync_wait_one_day: True

  CLI Example:

      salt '*' pkg.refresh_db

salt.modules.ebuildpkg.remove(name=None, slot=None, fromrepo=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 emerge 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 via emerge --unmerge.

  name

    The name of the package to be deleted.

  slot

    Restrict the remove to a specific slot. Ignored if `name` is None.

  fromrepo

    Restrict the remove to a specific slot. Ignored if `name` is None.

  Multiple Package Options:

  pkgs

    Uninstall multiple packages. `slot` and `fromrepo` arguments are ignored if this argument is present. Must be passed as a python list.

  Added in version 0.16.0.

  Returns a dict containing the changes.

  CLI Example:

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

salt.modules.ebuildpkg.update(pkg, slot=None, fromrepo=None, refresh=False, binhost=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 emerge 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).

  Updates the passed package (emerge --update package)

  slot

    Restrict the update to a particular slot. It will update to the latest version within the slot.

  fromrepo

    Restrict the update to a particular repository. It will update to the latest version within the repository.

  binhost

    has two options try and force. try - tells emerge to try and install the package from a configured binhost. force - forces emerge to install the package from a binhost otherwise it fails out.

  Return a dict containing the new package names and versions:

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

  CLI Example:

      salt '*' pkg.update <package name>

salt.modules.ebuildpkg.upgrade(refresh=True, binhost=None, backtrack=3, **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 emerge 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 (emerge -uDN @world)

  binhost

    has two options try and force. try - tells emerge to try and install the package from a configured binhost. force - forces emerge to install the package from a binhost otherwise it fails out.

  backtrack

    Specifies an integer number of times to backtrack if dependency calculation fails due to a conflict or an unsatisfied dependency (default: ´3´).

    Added in version 2015.8.0.

  Returns a dictionary containing the changes:

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

  CLI Example:

      salt '*' pkg.upgrade

salt.modules.ebuildpkg.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.ebuildpkg.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> ...

salt.modules.ebuildpkg.version_clean(version)

  Clean the version string removing extra data.

  CLI Example:

      salt '*' pkg.version_clean <version_string>

salt.modules.ebuildpkg.version_cmp(pkg1, pkg2, **kwargs)

  Do a cmp-style comparison on two packages. Return -1 if pkg1 < pkg2, 0 if pkg1 == pkg2, and 1 if pkg1 > pkg2. Return None if there was a problem making the comparison.

  CLI Example:

      salt '*' pkg.version_cmp '0.2.4-0' '0.2.4.1-0'