Conda¶
Conda cross-language package and environment manager.
Reads go through conda’s --json mode: installed packages come from
conda list --json and search from conda search "*query*" --json.
conda has no dedicated outdated command, so the upgrade the solver would
perform is simulated with conda update --all --dry-run --json and its
UNLINK (current) and LINK (candidate) sets are diffed by name: a
name in both is an in-place upgrade, while a LINK-only entry is a
freshly pulled dependency and is not reported.
Note
Every operation targets conda’s currently active environment, which is
base when none is activated. mpm neither activates nor switches
environments: it inspects and mutates whatever environment conda resolves
from the inherited CONDA_PREFIX / CONDA_DEFAULT_ENV, exactly as a
bare conda call in the same shell would. Per-environment targeting is
not supported yet.
Note
The >=4.6.0 floor is the release where update --dry-run --json
settled on an actions mapping whose LINK / UNLINK values are
package dicts, the shape the outdated diff parses. Much older conda
wrapped actions in a list and emitted bare
channel::name-version-build strings instead.
Home page: https://conda.org
Version requirement:
>=4.6.0
Platforms¶
🐧 Linux
🍎 macOS
🪟 Windows
Operations¶
Operation |
Supported |
Notes |
|---|---|---|
|
✓ |
|
|
✓ |
|
|
✓ |
exact and extended search backfilled by |
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
||
|
✓ |
Ecosystem¶
Accepted purl types:
pkg:conda
Usage¶
$ mpm --conda installed
$ mpm --conda search "query"
$ mpm --conda upgrade --all
$ mpm install pkg:conda/hello
$ mpm --dry-run --conda upgrade --all
Every example above accepts --dry-run, which simulates the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.
Deselect the manager for a single run with --no-conda, disable it from your configuration, or tune its invocation attributes with per-manager overrides.
Command line¶
CLI names, in lookup order:
conda
The version is probed by running:
$ conda --version
conda 24.5.0
and extracted with:
r"conda\s+(?P<version>\S+)"
Privilege escalation¶
mpm runs this manager as the current user and never prepends sudo by default. Flip the policy for its privileged operations with --sudo or the per-manager sudo override.
See privilege escalation for the full policy.
Cooldown¶
State of Conda’s release-age gating, from the cooldown support table:
Status: 🚧 Proposed
Mechanism:
--exclude-newer/exclude_newer(open issue + PR)Reference: conda/conda#15759
With --cooldown set, mpm skips this manager’s install and upgrade operations rather than run them unguarded (fail-closed); --allow-unsupported-managers opts back in.
Reference traces¶
Raw native outputs captured in the manager source: the reference mpm’s parsers were written against. If you know Conda well and a transcript below looks wrong, or a newer release changed its output format, report it.
$ conda list --json
[
{
"base_url": "https://repo.anaconda.com/pkgs/main",
"build_number": 0,
"build_string": "py312hca03da5_0",
"channel": "pkgs/main",
"dist_name": "pip-24.0-py312hca03da5_0",
"name": "pip",
"platform": "osx-arm64",
"version": "24.0"
},
{
"base_url": "https://repo.anaconda.com/pkgs/main",
"build_number": 0,
"build_string": "py312_0",
"channel": "pkgs/main",
"dist_name": "pytz-2024.1-py312_0",
"name": "pytz",
"platform": "osx-arm64",
"version": "2024.1"
}
]
$ conda update --all --dry-run --json
{
"actions": {
"FETCH": [],
"LINK": [
{
"base_url": "https://repo.anaconda.com/pkgs/main",
"build_number": 0,
"build_string": "py312_0",
"channel": "pkgs/main",
"dist_name": "pytz-2024.2-py312_0",
"name": "pytz",
"platform": "osx-arm64",
"version": "2024.2"
}
],
"UNLINK": [
{
"base_url": "https://repo.anaconda.com/pkgs/main",
"build_number": 0,
"build_string": "py312_0",
"channel": "pkgs/main",
"dist_name": "pytz-2024.1-py312_0",
"name": "pytz",
"platform": "osx-arm64",
"version": "2024.1"
}
],
"PREFIX": "/opt/conda"
},
"dry_run": true,
"prefix": "/opt/conda",
"success": true
}
$ conda update --all --dry-run --json
{
"message": "All requested packages already installed.",
"success": true
}