What is Meta Package Manager?
snapshots every package on your machine to one file, and restores it on a new one
provides the
mpmCLI, a wrapper around all package managersmpmis likeyt-dlp, but for package managers instead of videosmpmsolves XKCD #1654 - Universal Install Script
Featuresยถ
Snapshot installed packages to a TOML manifest or a Brewfile, across every manager at once, with
mpm dump packages.toml:Restore that manifest on the next machine with
mpm restore packages.toml, and get the same set of packages back.Inventory and list all package managers available on the system:
Runs on macOS, Linux, Windows, FreeBSD, NetBSD and OpenBSD, with standalone executables for the first three.
List outdated packages, with the differing part of each version picked out in color, so a patch bump reads apart from a major one at a glance:
Upgrade all outdated packages from every manager at once, the primary use case of
mpmand the main reason I built it, since 70% of vulnerabilities lie in outdated libraries. A manager that fails is markedโand named in a closing summary, while the others carry on:Mitigate supply-chain attacks with a release-age cooldown that refuses any version published more recently than a threshold. A manager that cannot enforce the window is skipped, rather than run unguarded:
Software Bill of Materials: export installed packages to SPDX and CycloneDX SBOM files.
Pin-point commands to a subset of package managers (include/exclude selectors).
Support plain, versioned and purl package specifiers.
Export output to JSON or user-friendly tables.
Shell auto-completion for Bash, Zsh and Fish.
Desktop menu bar integration: a SwiftBar/Xbar plugin on macOS, a GNOME Shell extension on Linux.
Because
mpmtries to wrap all other package managers, it became another pathological case of XKCD #927: Standards
Supported package managersยถ
One CLI to rule them all.
mpm runs them concurrently unless they share the same backend.
amย ยท antidoteย ยท antigenย ยท apkย ยท apmย ยท aptย ยท apt-cygย ยท apt-mintย ยท aptitudeย ยท asdfย ยท auraย ยท basaltย ยท binย ยท bobย ยท bpkgย ยท brewย ยท bunย ยท cargoย ยท caskย ยท caveย ยท chocoย ยท choosenimย ยท chromebrewย ยท claude-code-pluginsย ยท clibย ยท composerย ยท condaย ยท cpanย ยท deb-getย ยท dkp-pacmanย ยท dnfย ยท dnf5ย ยท dotnetย ยท elanย ยท emacsย ยท emergeย ยท eopkgย ยท finkย ยท fisherย ยท flatpakย ยท fwupdย ยท gcloudย ยท gemย ยท getnfย ยท gextย ยท gh-extย ยท ghcupย ยท goย ยท guixย ยท gupย ยท haxelibย ยท hyprpmย ยท ipsย ยท jpmย ยท juliaย ยท juliaupย ยท krewย ยท lazyย ยท luarocksย ยท lureย ยท macportsย ยท mambaย ยท masย ยท masonย ยท microย ยท micromambaย ยท miktexย ยท miseย ยท nalaย ยท nimbleย ยท nixย ยท npmย ยท oh-my-fishย ยท ollamaย ยท opamย ยท opkgย ยท pacaurย ยท pacmanย ยท pacstallย ยท pamacย ยท paruย ยท pearย ยท pearlย ยท piย ยท pikaurย ยท pipย ยท pipxย ยท pipxuย ยท pixiย ยท pkconย ยท pkgย ยท pkg-toolsย ยท pkginย ยท pkgitย ยท pkgmย ยท platformio-coreย ยท pnpmย ยท portsย ยท prt-getย ยท pwsh-galleryย ยท pyenvย ยท racoย ยท roswellย ยท rustupย ยท scoopย ยท sdkmanย ยท sfsuย ยท sheldonย ยท shellyย ยท skillsย ยท slapt-getย ยท snapย ยท soarย ยท sorceryย ยท spackย ยท steamcmdย ยท stewย ยท sun-toolsย ยท swupdย ยท tazpkgย ยท tlmgrย ยท topgradeย ยท trizenย ยท urpmiย ยท uvย ยท uvxย ยท vagrantย ยท vcpkgย ยท vim-packย ยท voltaย ยท vscodeย ยท vscodiumย ยท wingetย ยท xbpsย ยท xcodesย ยท yarnย ยท yarn-berryย ยท yayย ยท yaziย ยท yumย ยท zefย ยท zerobrewย ยท zeroinstallย ยท zimย ยท zinitย ยท zplugย ยท zvmย ยท zypper
mpm also reuses topgrade when present on the system to extend its mpm upgrade --all operation to extra runtimes, shell plugins and OS updaters. Other unsupported managers are catalogued in the docs.
Installationยถ
All installation methods are available in the documentation.
uvยถ
mpm is distributed on PyPI, so uv installs it on Linux, macOS and Windows alike:
$ uv tool install meta-package-manager
To try mpm without installing anything, run uvx meta-package-manager instead.
Homebrewยถ
mpm is part of the official Homebrew default tap, bottled for macOS and Linux, so you can install it with:
$ brew install meta-package-manager
MacPortsยถ
mpm is also available on MacPorts:
$ sudo port install meta-package-manager
Scoopยถ
mpm is available in the main repository of Scoop, so on Windows you just need to:
> scoop install main/meta-package-manager
Executablesยถ
Standalone binaries of mpm latest version are available as direct downloads for several platforms and architectures:
Platform |
|
|
|---|---|---|
Linux |
||
macOS |
||
Windows |
No need to install Python or uv. Useful for CI/CD pipelines running on minimal images, or old platforms where dependency management is painful.
Used inยถ
Check these projects to get real-life examples of mpm usage:
Dotfiles - macOS dotfiles for Python developers, using
mpmto manage system packages.
Feel free to send a PR to add your project in this list if you are relying on mpm in any way.
Usageยถ
Other subcommands and options are documented in:
the manager augmentations where youโll find inspiration on how to leverage
mpmpower