kdeldycke / meta-package-manager

🎁 wraps all package managers with a unifying CLI
https://kdeldycke.github.io/meta-package-manager
GNU General Public License v2.0
451 stars 33 forks source link
apt flatpak homebrew linux mac-app-store macos npm package-manager package-url pacman php-composer pip portage ruby-gem sbom snap steam windows xbar yarn

Meta Package Manager

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

What is Meta Package Manager?


Features

Supported package managers and operations

Package manager Min. version BSD[^bsd_without_macos] Linux[^linux] macOS Unix[^unix] 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 2.0.0 🪟
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 🅱️ 🐧 >_
pacaur 4.0.0 🅱️ 🐧 >_
pacman 5.0.0 🅱️ 🐧 >_
paru 1.9.3 🅱️ 🐧 >_
pip 10.0.0 🅱️ 🐧 🍎 >_ 🪟
pipx 1.0.0 🅱️ 🐧 🍎 >_ 🪟
pkg 1.11 🅱️ 🐧 🍎 >_
scoop 0.2.4 🪟
snap 2.0.0 🅱️ 🐧 >_
steamcmd None 🅱️ 🐧 🍎 >_ 🪟
uv 0.1.45 🅱️ 🐧 🍎 >_ 🪟
vscode 1.60.0 🅱️ 🐧 🍎 >_ 🪟
winget 1.7 🪟
yarn 1.20.0 🅱️ 🐧 🍎 >_ 🪟
yay 11.0.0 🅱️ 🐧 >_
yum 4.0.0 🅱️ 🐧 >_
zypper 1.14.0 🅱️ 🐧 >_

[^bsd_without_macos]: BSD: FreeBSD, NetBSD, OpenBSD, SunOS.

[^linux]: Linux: Linux, Windows Subsystem for Linux v2.

[^unix]: Unix: AIX, Cygwin, GNU/Hurd, Solaris, Windows Subsystem for Linux v1.

Note: Missing manager

If your favorite manager is missing or does not support an operation, you can influence its implementation: open a ticket to document its output or read the contribution guide and submit a pull request.

I can do that work for you if you purchase business support 🤝 or sponsor the project 🫶.

Installation

All installation methods are available in the documentation.

Below are the most popular ones:

macOS

mpm is part of the official Homebrew default tap, so you can install it with:

$ brew install meta-package-manager

Windows

mpm is available in the main repository of Scoop, so you just need to:

> scoop install main/meta-package-manager

From sources

pipx is the cleanest way to install mpm from sources on any platform:

$ pipx install meta-package-manager

Executables

Standalone executables of mpm's latest version are available as direct downloads for several platforms and architectures:

Platform x86_64 arm64
Linux[^linux] Download mpm-linux-x64.bin
macOS Download mpm-macos-x64.bin Download mpm-macos-arm64.bin
Windows Download mpm-windows-x64.exe

Quickstart

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       │
│ openssl@1.1  │ openssl@1.1 │ 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          │ npm@8.0.0   │ 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).

List managers

If you wonder why your package manager doesn't seems to be identified, you can list all those recognized by mpm with:

$ mpm --all-managers managers
╭────────────┬────────────────────┬────────────────┬──────────────────────────────┬────────────┬───────────╮
│ Manager ID │ Name               │ Supported      │ CLI                          │ Executable │ Version   │
├────────────┼────────────────────┼────────────────┼──────────────────────────────┼────────────┼───────────┤
│ apm        │ Atom's apm         │ ✓              │ ✘ apm not found              │            │           │
│ apt        │ APT                │ ✘ Linux only   │ ✓ /usr/bin/apt               │ ✓          │ ✘         │
│ apt-mint   │ Linux Mint's apt   │ ✘ Linux only   │ ✓ /usr/bin/apt               │ ✓          │ ✘         │
│ brew       │ Homebrew Formulae  │ ✓              │ ✓ /opt/homebrew/bin/brew     │ ✓          │ ✓ 3.6.3   │
│ cargo      │ Rust's cargo       │ ✓              │ ✓ /opt/homebrew/bin/cargo    │ ✓          │ ✓ 1.64.0  │
│ cask       │ Homebrew Cask      │ ✓              │ ✓ /opt/homebrew/bin/brew     │ ✓          │ ✓ 3.6.3   │
│ choco      │ Chocolatey         │ ✘ Windows only │ ✘ choco not found            │            │           │
│ composer   │ PHP's Composer     │ ✓              │ ✓ /opt/homebrew/bin/composer │ ✓          │ ✓ 2.4.2   │
│ dnf        │ DNF                │ ✘ Linux only   │ ✘ dnf not found              │            │           │
│ emerge     │ Emerge             │ ✘ Linux only   │ ✘ emerge not found           │            │           │
│ flatpak    │ Flatpak            │ ✘ Linux only   │ ✘ flatpak not found          │            │           │
│ gem        │ Ruby Gems          │ ✓              │ ✓ /usr/bin/gem               │ ✓          │ ✓ 3.0.3.1 │
│ mas        │ Mac AppStore       │ ✓              │ ✓ /opt/homebrew/bin/mas      │ ✓          │ ✓ 1.8.6   │
│ npm        │ Node's npm         │ ✓              │ ✓ /opt/homebrew/bin/npm      │ ✓          │ ✓ 8.19.2  │
│ opkg       │ OPKG               │ ✘ Linux only   │ ✘ opkg not found             │            │           │
│ pacman     │ Pacman             │ ✘ Linux only   │ ✘ pacman not found           │            │           │
│ paru       │ Paru               │ ✘ Linux only   │ ✘ paru not found             │            │           │
│ pip        │ Pip                │ ✓              │ ✓ ~/.pyenv/shims/python3     │ ✓          │ ✓ 22.2.2  │
│ pipx       │ Pipx               │ ✓              │ ✓ /opt/homebrew/bin/pipx     │ ✓          │ ✓ 1.1.0   │
│ scoop      │ Scoop              │ ✘ Windows only │ ✘ scoop not found            │            │           │
│ snap       │ Snap               │ ✘ Linux only   │ ✘ snap not found             │            │           │
│ steamcmd   │ Valve Steam        │ ✓              │ ✘ steamcmd not found         │            │           │
│ vscode     │ Visual Studio Code │ ✓              │ ✓ /opt/homebrew/bin/code     │ ✓          │ ✓ 1.71.2  │
│ yarn       │ Node's yarn        │ ✓              │ ✓ /opt/homebrew/bin/yarn     │ ✓          │ ✓ 1.22.19 │
│ 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 contribution guide.

Usage

Other subcommands and options are documented in:

[^bsd_without_macos]: BSD: FreeBSD, NetBSD, OpenBSD, SunOS.

[^linux]: Linux: Linux, Windows Subsystem for Linux v2.

[^unix]: Unix: AIX, Cygwin, GNU/Hurd, Solaris, Windows Subsystem for Linux v1.