Manager augmentationsΒΆ

Package managers are not comparable: some ship advanced features others lack. Rather than expose that unevenness, mpm backfills the missing pieces on top of the native tools, so every manager gains a consistent baseline.

Managers gaining featuresΒΆ

Each βœ… below is a capability mpm synthesizes for a manager that does not provide it natively. The rest of this page explains each column.

Manager

Full upgrade --all

Exact search

Extended search

apk

βœ…

apm

βœ…

apt-mint

βœ…

asdf

βœ…

βœ…

βœ…

cargo

βœ…

βœ…

composer

βœ…

conda

βœ…

βœ…

deb-get

βœ…

βœ…

dnf

βœ…

βœ…

dnf5

βœ…

βœ…

eopkg

βœ…

flatpak

βœ…

βœ…

gem

βœ…

guix

βœ…

βœ…

mas

βœ…

βœ…

mise

βœ…

nix

βœ…

βœ…

npm

βœ…

opkg

βœ…

βœ…

pacaur

βœ…

pacman

βœ…

pacstall

βœ…

βœ…

paru

βœ…

pip

βœ…

pnpm

βœ…

pwsh-gallery

βœ…

scoop

βœ…

βœ…

sfsu

βœ…

βœ…

snap

βœ…

βœ…

steamcmd

βœ…

uv

βœ…

xbps

βœ…

βœ…

yarn

βœ…

βœ…

yarn-berry

βœ…

βœ…

yay

βœ…

yum

βœ…

βœ…

Free upgrade --allΒΆ

Some managers cannot upgrade every outdated package in a single command. pip, for instance, has no full-upgrade subcommand. When a manager only knows how to upgrade one package at a time, mpm synthesizes the bulk operation: it lists the outdated packages and upgrades them one by one, so mpm upgrade --all works everywhere.

$ mpm --pip upgrade --all
Updating all outdated packages from pip...
warning: pip doesn't seems to implement a full upgrade subcommand. Call
single-package upgrade CLI one by one.

Collecting boltons
  Using cached boltons-20.1.0-py2.py3-none-any.whl (169 kB)
Installing collected packages: boltons
Successfully installed boltons-20.1.0

Collecting graphviz
  Using cached graphviz-0.14-py2.py3-none-any.whl (18 kB)
Installing collected packages: graphviz
Successfully installed graphviz-0.14
(...)

Today this backfills asdf, pip, steamcmd and uv (the Full upgrade --all column above).

Universal augmentationsΒΆ

The table above is selective: each βœ… backfills a capability only some managers lack. A second class of augmentation applies to every manager mpm drives, whether or not its native CLI cooperates.

Safe --dry-run everywhereΒΆ

mpm intercepts each state-changing call and logs it instead of running it, so any manager becomes previewable even when its own CLI has no dry-run mode:

$ mpm --dry-run --apt upgrade --all
warning: Dry-run: (...)

Comparable versions across schemesΒΆ

Package managers report versions in mutually incompatible schemes: semver, PEP 440, calendar versioning, Debian epochs, Gentoo suffixes, and more. Rather than a parser per format, mpm runs every version through a single tokenizer that yields a good-enough ordering, so outdated shows a meaningful installed-to-latest comparison even for managers whose native output never could.

Standard package URLs (purl)ΒΆ

Every package mpm reports carries a purl identifier that the native tools do not emit. It is the same identifier that powers mpm sbom, giving every manager a portable, tool-agnostic package name.

One sudo prompt, uniform policyΒΆ

Managers disagree on whether an operation needs root. mpm applies a consistent policy: system managers (apt, dnf, pacman, …) escalate, user-level managers do not. On an interactive terminal it authenticates once up front instead of letting each manager prompt mid-run; off a terminal, managers that need root fail fast rather than hanging on a hidden prompt.