Conda¶
- ID
conda- Home page
- Version requirement
>= 4.6
- Platforms
🐧 Linux · 🍎 macOS · 🪟 Windows
- Operations
installed·outdated·search·install·upgrade·upgrade_all·remove·cleanup- purl types
pkg:conda- CLI name
conda- Issues and PRs
- Source
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.
What mpm adds to conda¶
Through mpm, conda gains --exact and --extended search, to narrow to exact names or match descriptions.
Bigger still, mpm reaches across every manager at once: mpm installed and mpm outdated cover conda alongside every other manager you run in one table, mpm upgrade --all updates them together, and mpm sbom exports the whole machine as one bill of materials.
Every mpm command also gains --dry-run and --plan previews, cross-scheme version comparison and purl identifiers. See manager augmentations for how each one is built.
Your conda commands, in mpm¶
You already know conda: each operation maps one-to-one onto mpm, in an interface shared by every manager.
To… |
With |
With |
|---|---|---|
List what’s installed |
|
|
List outdated packages |
|
|
Search for a package |
|
|
Install a package |
|
|
Upgrade one package |
|
|
Upgrade everything |
|
|
Remove a package |
|
|
Clear caches |
|
|
Prefix any command above with --dry-run to simulate the underlying manager calls without touching the system: the safe way to watch what mpm would do before trusting it.
Operations¶
Operation |
Supported |
Notes |
|---|---|---|
|
✓ |
|
|
✓ |
|
|
||
|
✓ |
exact and extended search backfilled by |
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
✓ |
|
|
||
|
✓ |
|
|
Selecting and configuring conda¶
Deselect conda for a single run with --no-conda, or persist the choice in your configuration:
[mpm]
conda = false
Keep it enabled but tune how mpm drives it with a per-manager override:
[mpm.managers.conda]
timeout = 900
mpm config-template conda prints every overridable attribute as a ready-to-paste block.
Recipes¶
A few jobs you would otherwise script around conda, one mpm command each:
Snapshot and clone a machine:
mpm --conda dump conda.toml, thenmpm restore conda.tomlon the next one.Export a compliance SBOM:
mpm --conda sbom(CycloneDX by default,--spdxfor SPDX).
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
A cooldown only pays off where a compromised release can be withdrawn while the clock runs, and can only be emulated where the registry dates its releases. From the retraction table:
Registry: anaconda.org / conda-forge (
pkg:conda)Retraction: Relabel: “we do not allow edits or the deletion of packages on conda-forge”; a bad artifact is labelled broken and “Users will no longer be able to install them by default” (procedure)
Publish date: ✅
upload_time, with thebrokenlabel carried inlabels(API)
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.
Version probe¶
The version is probed by running:
$ conda --version
conda 24.5.0
and extracted with:
r"conda\s+(?P<version>\S+)"
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
}
Feed any of these through mpm and the raw output becomes one uniform table, the same shape for every manager: filter it, project columns, or export it (mpm --conda installed --output json, or csv, toml, yaml), each package carrying a purl and a version comparable across managers.
Changelog¶
7.1.0(2026-07-07)Add Conda package manager with
installed,outdated,search,install,upgrade,remove, andcleanupsupport, cross-platform on Linux, macOS, and Windows; requires conda>=4.6.0.