Topgrade¶
A meta-meta-package-manager: topgrade (https://github.com/topgrade-rs/topgrade) wrapped by mpm.
topgrade is a Rust utility that auto-detects every package manager, runtime
version manager, plugin manager and OS updater installed on the host, then runs
each one in sequence. From mpm’s vantage point it looks like a black-box
upgrader: there is no notion of installed packages, no concept of outdated
entries, no search index, no install or remove primitives. Only upgrade --all
makes sense, and it is the only operation declared here.
Adding topgrade to mpm’s pool is a knowing nod to XKCD #927
(https://xkcd.com/927/): mpm already wraps every package manager topgrade wraps,
so routing through it is structurally redundant. The benefit is access to
topgrade’s broader catalog of runtime/plugin managers in the same
mpm upgrade --all invocation (mise, rustup, oh-my-zsh, JetBrains plugins,
vim/tmux plugin managers, and so on) without having to teach mpm each one.
Caution: mpm upgrade --topgrade runs topgrade --yes to skip the interactive
prompts. If you also select other managers that topgrade itself drives (brew,
apt, pacman, …), those will be upgraded twice in the same run.
Home page: https://github.com/topgrade-rs/topgrade
Version requirement:
>=17.0.0
Platforms¶
🅱️ BSD
🐧 Linux
🍎 macOS
🪟 Windows
Operations¶
Operation |
Supported |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
✓ |
|
|
|
|
|
Ecosystem¶
Accepted purl types:
pkg:topgrade
Usage¶
$ mpm --topgrade installed
$ mpm --topgrade upgrade --all
$ mpm --dry-run --topgrade 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-topgrade, disable it from your configuration, or tune its invocation attributes with per-manager overrides.
Command line¶
CLI names, in lookup order:
topgrade
The version is probed by running:
$ topgrade --version
topgrade 17.4.0
and extracted with:
r"topgrade\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.
None of its operations needs root.
See privilege escalation for the full policy.
Cooldown¶
State of Topgrade’s release-age gating, from the cooldown support table:
Status: ➖ N/A (meta-upgrader; delegates to each underlying manager)
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.