Support for Portage
optdepends: |
|
---|
For now all package names MUST include the package category,
i.e. 'vim'
will not work, 'app-editors/vim'
will.
salt.modules.ebuild.
check_db
(*names, **kwargs)¶0.17.0 新版功能.
Returns a dict containing the following information for each specified package:
found
, which will be a boolean value denoting if a match was
found in the package database.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范例:
salt '*' pkg.check_db <package1> <package2> <package3>
salt.modules.ebuild.
check_extra_requirements
(pkgname, pkgver)¶Check if the installed package already has the given requirements.
CLI 范例:
salt '*' pkg.check_extra_requirements 'sys-devel/gcc' '~>4.1.2:4.1::gentoo[nls,fortran]'
salt.modules.ebuild.
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
is None.name
is None.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 范例:
salt '*' pkg.depclean <package name>
salt.modules.ebuild.
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.
0.17.0 新版功能: Initial automatic enforcement added when pkg is used on a Gentoo system.
在 2014.1.0-Hydrogen 版更改: Configure option added to make this behaviour optional, defaulting to off.
参见
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 范例:
salt '*' pkg.ex_mod_init
salt.modules.ebuild.
install
(name=None, refresh=False, pkgs=None, sources=None, slot=None, fromrepo=None, uses=None, binhost=None, **kwargs)¶Install the passed package(s), add refresh=True to sync the portage tree before package is installed.
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 范例:
salt '*' pkg.install <package name>
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 范例:
salt '*' pkg.install sys-devel/gcc slot='4.4'
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 范例:
salt '*' pkg.install salt fromrepo='gentoo'
Similar to slot, but specifies a list of use flag. Ignored if "pkgs" or "sources" or "version" is passed.
CLI 范例:
salt '*' pkg.install sys-devel/gcc uses='["nptl","-nossp"]'
Multiple Package Installation Options:
A list of packages to install from the portage tree. Must be passed as a python list.
CLI 范例:
salt '*' pkg.install pkgs='["foo","bar","~category/package:slot::repository[use]"]'
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 范例:
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.
CLI 范例:
salt '*' pkg.latest_version <package name>
salt '*' pkg.latest_version <package1> <package2> <package3> ...
salt.modules.ebuild.
list_pkgs
(versions_as_list=False, **kwargs)¶List the packages currently installed in a dict:
{'<package_name>': '<version>'}
CLI 范例:
salt '*' pkg.list_pkgs
salt.modules.ebuild.
list_upgrades
(refresh=True, backtrack=3)¶List all available package upgrades.
CLI 范例:
salt '*' pkg.list_upgrades
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, fromrepo=None, pkgs=None, **kwargs)¶Portage does not have a purge, this function calls remove followed by depclean to emulate a purge process
name
is None.Multiple Package Options:
slot
and fromrepo
arguments are
ignored if this argument is present. Must be passed as a python list.0.16.0 新版功能.
Returns a dict containing the changes.
CLI 范例:
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 范例:
salt '*' pkg.refresh_db
salt.modules.ebuild.
remove
(name=None, slot=None, fromrepo=None, pkgs=None, **kwargs)¶Remove packages via emerge --unmerge.
name
is None.name
is None.Multiple Package Options:
slot
and fromrepo
arguments are
ignored if this argument is present. Must be passed as a python list.0.16.0 新版功能.
Returns a dict containing the changes.
CLI 范例:
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.ebuild.
update
(pkg, slot=None, fromrepo=None, refresh=False, binhost=None)¶Updates the passed package (emerge --update package)
Return a dict containing the new package names and versions:
{'<package>': {'old': '<old-version>',
'new': '<new-version>'}}
CLI 范例:
salt '*' pkg.update <package name>
salt.modules.ebuild.
upgrade
(refresh=True, binhost=None, backtrack=3)¶Run a full system upgrade (emerge -uDN @world)
Return a dict containing the new package names and versions:
{'<package>': {'old': '<old-version>',
'new': '<new-version>'}}
CLI 范例:
salt '*' pkg.upgrade
salt.modules.ebuild.
upgrade_available
(name)¶Check whether or not an upgrade is available for a given package
CLI 范例:
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 范例:
salt '*' pkg.version <package name>
salt '*' pkg.version <package1> <package2> <package3> ...
salt.modules.ebuild.
version_clean
(version)¶Clean the version string removing extra data.
CLI 范例:
salt '*' pkg.version_clean <version_string>
salt.modules.ebuild.
version_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 范例:
salt '*' pkg.version_cmp '0.2.4-0' '0.2.4.1-0'