salt.modules.ebuild

Support for Portage

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.ebuild.compare(pkg1='', oper='==', pkg2='')

Compare two version strings.

CLI Example:

salt '*' pkg.compare '0.2.4-0' '<' '0.2.4.1-0'
salt '*' pkg.compare pkg1='0.2.4-0' oper='<' pkg2='0.2.4.1-0'
salt.modules.ebuild.depclean(name=None, slot=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.
pkgs
Clean multiple packages. slot argument is 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.ebuild.install(name=None, refresh=False, pkgs=None, sources=None, slot=None, **kwargs)

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'

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"]'
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"}]'

Returns a dict containing the new package names and versions:

{'<package>': {'old': '<old-version>',
               'new': '<new-version>'}}
salt.modules.ebuild.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.ebuild.list_pkgs(versions_as_list=False)

List the packages currently installed in a dict:

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

CLI Example:

salt '*' pkg.list_pkgs
salt.modules.ebuild.list_upgrades(refresh=True)

List all available package upgrades.

CLI Example:

salt '*' pkg.list_upgrades
salt.modules.ebuild.perform_cmp(pkg1='', pkg2='')

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.perform_cmp '0.2.4-0' '0.2.4.1-0'
salt '*' pkg.perform_cmp pkg1='0.2.4-0' pkg2='0.2.4.1-0'
salt.modules.ebuild.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.ebuild.purge(name=None, slot=None, pkgs=None, **kwargs)

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.

Multiple Package Options:

pkgs
Uninstall multiple packages. slot argument is ignored if this argument is present. Must be passed as a python list.

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.ebuild.refresh_db()

Updates the portage tree (emerge --sync). Uses eix-sync if available.

CLI Example:

salt '*' pkg.refresh_db
salt.modules.ebuild.remove(name=None, slot=None, pkgs=None, **kwargs)

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.

Multiple Package Options:

pkgs
Uninstall multiple packages. slot argument is ignored if this argument is present. Must be passed as a python list.

Returns a dict containing the changes.

CLI Example:

salt '*' pkg.remove <package name>
salt '*' pkg.remove <package name> slot=4.4
salt '*' pkg.remove <package1>,<package2>,<package3>
salt '*' pkg.remove pkgs='["foo", "bar"]'
salt.modules.ebuild.update(pkg, slot=None, refresh=False)

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.

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.ebuild.upgrade(refresh=True)

Run a full system upgrade (emerge --update world)

Return a dict containing the new package names and versions:

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

CLI Example:

salt '*' pkg.upgrade
salt.modules.ebuild.upgrade_available(name)

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

CLI Example:

salt '*' pkg.upgrade_available <package name>
salt.modules.ebuild.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> ...

Previous topic

salt.modules.dpkg

Next topic

salt.modules.eix