meta-package-manager icon indicating copy to clipboard operation
meta-package-manager copied to clipboard

🎁 wraps all package managers with a unifying CLI

Meta Package Manager

Last release Python versions Type checked with mypy Unittests status Coverage status Documentation status DOI

What is Meta Package Manager?


Features

  • Inventory and list all package managers available on the system.
  • Supports macOS, Linux and Windows.
  • List installed packages.
  • Search for packages.
  • Install a package.
  • Remove a package.
  • List outdated packages.
  • Sync local package infos.
  • Upgrade all outdated packages.
  • Backup list of installed packages to TOML file.
  • Restore/install list of packages from TOML files.
  • Pin-point commands to a subset of package managers (include/exclude selectors).
  • Export results in JSON or user-friendly tables.
  • Shell auto-completion for Bash, Zsh and Fish.
  • Provides a Xbar/SwiftBar plugin for friendly macOS integration.
  • Because mpm try to wrap all other package managers, it became another pathological case of XKCD #927: Standards

Supported package managers and operations

Package manager Min. version Linux macOS Windows installed outdated search install upgrade upgrade_all remove sync cleanup
apm 1.0.0 🐧 🍎 🪟
apt 1.0.0 🐧
apt-mint 1.0.0 🐧
brew 2.7.0 🐧 🍎
cargo 1.0.0 🐧 🍎 🪟
cask 2.7.0 🍎
choco 0.10.4 🪟
composer 1.4.0 🐧 🍎 🪟
dnf 4.0.0 🐧
emerge 3.0.0 🐧
flatpak 1.2.0 🐧
gem 2.5.0 🐧 🍎 🪟
mas 1.6.1 🍎
npm 4.0.0 🐧 🍎 🪟
opkg 0.2.0 🐧
pacman 5.0.0 🐧
paru 1.9.3 🐧
pip 10.0.0 🐧 🍎 🪟
pipx 1.0.0 🐧 🍎 🪟
scoop 0.2.4 🪟
snap 2.0.0 🐧
steamcmd None 🐧 🍎 🪟
vscode 1.60.0 🐧 🍎 🪟
yarn 1.20.0 🐧 🍎 🪟
yay 11.0.0 🐧
yum 4.0.0 🐧
zypper 1.14.0 🐧

Quickstart

Easiest way is to install mpm with pipx:

$ pipx install meta-package-manager

Other alternatives installation methods are available in the documentation.

List managers

List all supported package managers and their status on current system (macOS in this case):

$ mpm --all-managers managers
╭────────────────────┬──────────┬────────────────┬───────────────────────────┬────────────┬──────────────╮
│ Package manager    │ ID       │ Supported      │ CLI                       │ Executable │ Version      │
├────────────────────┼──────────┼────────────────┼───────────────────────────┼────────────┼──────────────┤
│ Atom's apm         │ apm      │ ✓              │ ✓ /usr/local/bin/apm      │ ✓          │ ✓ 2.6.2      │
│ APT                │ apt      │ ✘ Linux only   │ ✓ /usr/bin/apt            │ ✓          │ ✘            │
│ Linux Mint's apt   │ apt-mint │ ✘ Linux only   │ ✓ /usr/bin/apt            │ ✓          │ ✘            │
│ Homebrew Formulae  │ brew     │ ✓              │ ✓ /usr/local/bin/brew     │ ✓          │ ✓ 3.2.16     │
│ Rust's cargo       │ cargo    │ ✓              │ ✓ /opt/homebrew/bin/cargo │ ✓          │ ✓ 1.59.0     │
│ Homebrew Cask      │ cask     │ ✓              │ ✓ /usr/local/bin/brew     │ ✓          │ ✓ 3.2.16     │
│ Chocolatey         │ choco    │ ✘ Windows only │ ✘ choco not found         │            │              │
│ PHP's Composer     │ composer │ ✓              │ ✓ /usr/local/bin/composer │ ✓          │ ✓ 2.1.8      │
│ DNF                │ dnf      │ ✘ Linux only   │ ✘ dnf not found           │            │              │
│ Emerge             │ emerge   │ ✘ Linux only   │ ✘ emerge not found        │            │              │
│ Flatpak            │ flatpak  │ ✘ Linux only   │ ✘ flatpak not found       │            │              │
│ Ruby Gems          │ gem      │ ✓              │ ✓ /usr/bin/gem            │ ✓          │ ✓ 3.0.3      │
│ Mac AppStore       │ mas      │ ✓              │ ✓ /usr/local/bin/mas      │ ✓          │ ✓ 1.8.3      │
│ Node's npm         │ npm      │ ✓              │ ✓ /usr/local/bin/npm      │ ✓          │ ✓ 7.24.0     │
│ OPKG               │ opkg     │ ✘ Linux only   │ ✘ opkg not found          │            │              │
│ Pacman             │ pacman   │ ✘ Linux only   │ ✘ pacman not found        │            │              │
│ Pip                │ pip      │ ✓              │ ✓ /usr/local/bin/python3  │ ✓          │ ✓ 21.2.4     │
│ Pipx               │ pipx     │ ✓              │ ✓ /opt/homebrew/bin/pipx  │ ✓          │ ✓ 1.0.0      │
│ Snap               │ snap     │ ✘ Linux only   │ ✘ snap not found          │            │              │
│ SteamCMD           │ steamcmd │ ✓              │ ✓ /opt/local/bin/steamcmd │ ✓          │ ✓ 1648077083 │
│ Visual Studio Code │ vscode   │ ✓              │ ✓ /usr/local/bin/code     │ ✓          │ ✓ 1.61.0     │
│ Node's yarn        │ yarn     │ ✓              │ ✘ yarn not found          │            │              │
│ Yay                │ yay      │ ✘ Linux only   │ ✘ yay not found           │            │              │
│ YUM                │ yum      │ ✘ Linux only   │ ✘ yum not found           │            │              │
│ Zypper             │ zypper   │ ✘ Linux only   │ ✘ zypper not found        │            │              │
╰────────────────────┴──────────┴────────────────┴───────────────────────────┴────────────┴──────────────╯

If your favorite manager is not supported yet, you can help! See the contibution guide.

List installed packages

List all packages installed on current system:

$ mpm installed
╭─────────────────────────────┬─────────────────────────────┬─────────┬────────────────────╮
│ Package name                │ ID                          │ Manager │ Installed version  │
├─────────────────────────────┼─────────────────────────────┼─────────┼────────────────────┤
│ github                      │ github                      │ apm     │ 0.36.9             │
│ update-package-dependencies │ update-package-dependencies │ apm     │ 0.13.1             │
│ rust                        │ rust                        │ brew    │ 1.55.0             │
│ x264                        │ x264                        │ brew    │ r3060              │
│ atom                        │ atom                        │ cask    │ 1.58.0             │
│ visual-studio-code          │ visual-studio-code          │ cask    │ 1.52.0             │
│ nokogiri                    │ nokogiri                    │ gem     │ x86_64-darwin      │
│ rake                        │ rake                        │ gem     │ 13.0.3             │
│ iMovie                      │ 408981434                   │ mas     │ 10.2.5             │
│ Telegram                    │ 747648890                   │ mas     │ 8.1                │
│ npm                         │ npm                         │ npm     │ 7.24.0             │
│ raven                       │ raven                       │ npm     │ 2.6.4              │
│ jupyterlab                  │ jupyterlab                  │ pip     │ 3.1.14             │
│ Sphinx                      │ Sphinx                      │ pip     │ 4.2.0              │
│ ms-python.python            │ ms-python.python            │ vscode  │ 2021.10.1317843341 │
│ ms-toolsai.jupyter          │ ms-toolsai.jupyter          │ vscode  │ 2021.9.1001312534  │
╰─────────────────────────────┴─────────────────────────────┴─────────┴────────────────────╯
16 packages total (brew: 2, pip: 2, apm: 2, gem: 2, cask: 2, mas: 2, vscode: 2, npm: 2, composer: 0).

List outdated packages

List all packages installed for which an upgrade is available:

$ mpm outdated
╭──────────────┬─────────────┬─────────┬───────────────────┬────────────────╮
│ Package name │ ID          │ Manager │ Installed version │ Latest version │
├──────────────┼─────────────┼─────────┼───────────────────┼────────────────┤
│ curl         │ curl        │ brew    │ 7.79.1            │ 7.79.1_1       │
│ git          │ git         │ brew    │ 2.33.0            │ 2.33.0_1       │
│ [email protected][email protected] │ brew    │ 1.1.1l            │ 1.1.1l_1       │
│ rake         │ rake        │ gem     │ 13.0.3            │ 13.0.6         │
│ Telegram     │ 747648890   │ mas     │ 8.1               │ 8.1.3          │
│ npm          │ [email protected]   │ npm     │ 7.24.0            │ 8.0.0          │
│ pip          │ pip         │ pip     │ 21.2.4            │ 21.3           │
│ regex        │ regex       │ pip     │ 2021.9.30         │ 2021.10.8      │
╰──────────────┴─────────────┴─────────┴───────────────────┴────────────────╯
8 packages total (brew: 3, pip: 2, gem: 1, mas: 1, npm: 1, apm: 0, cask: 0, composer: 0).

Usage

More documentation is available in: