Package: meta-package-manager
What is Meta Package Manager?provides thempmCLI, a wrapper around all package managersmpmis likeyt-dlp, but for package
managers instead of videosmpmsolvesXKCD #1654 -Universal Install ScriptFeaturesInventory and list all package managers available on the system.Supports macOS, Linux and Windows.Standalone executablesfor Linux, macOS and Windows.List installed packages.List duplicate 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).Support plain, versioned andpurlpackage specifiers.Export output to JSON or print user-friendly tables.Shell auto-completion for Bash, Zsh and Fish.Provides aXbar/SwiftBar pluginfor
friendly macOS integration.Becausempmtry to wrap all other package managers, it became another
pathological case ofXKCD #927: StandardsSupported package managers and operationsPackage managerMin. versionBSD[^bsd_without_macos]Linux[^linux]macOSUnix[^unix]Windowsinstalledoutdatedsearchinstallupgradeupgrade_allremovesynccleanupapm⚠️1.0.0🅱️🐧🍎🪟✓✓✓✓✓✓apt1.0.0🅱️🐧>_✓✓✓✓✓✓✓✓apt-mint1.0.0🅱️🐧>_✓✓✓✓✓✓✓✓brew2.7.0🐧🍎✓✓✓✓✓✓✓✓✓cargo1.0.0🅱️🐧🍎>_🪟✓✓✓✓cask2.7.0🍎✓✓✓✓✓✓✓✓✓choco2.0.0🪟✓✓✓✓✓✓composer1.4.0🅱️🐧🍎>_🪟✓✓✓✓✓✓✓dnf4.0.0🅱️🐧>_✓✓✓✓✓✓✓✓emerge3.0.0🅱️🐧>_✓✓✓✓✓✓✓✓flatpak1.2.0🅱️🐧>_✓✓✓✓✓✓✓gem2.5.0🅱️🐧🍎>_🪟✓✓✓✓✓✓✓✓mas1.6.1🍎✓✓✓✓✓✓npm4.0.0🅱️🐧🍎>_🪟✓✓✓✓✓✓✓opkg0.2.0🅱️🐧>_✓✓✓✓✓✓✓pacaur4.0.0🅱️🐧>_✓✓✓✓✓✓✓✓✓pacman5.0.0🅱️🐧>_✓✓✓✓✓✓✓✓✓paru1.9.3🅱️🐧>_✓✓✓✓✓✓✓✓✓pip10.0.0🅱️🐧🍎>_🪟✓✓✓✓✓✓pipx1.0.0🅱️🐧🍎>_🪟✓✓✓✓✓✓pkg1.11🅱️🐧🍎>_✓✓✓✓✓✓✓✓✓scoop0.2.4🪟✓✓✓✓✓✓✓✓✓snap2.0.0🅱️🐧>_✓✓✓✓✓✓steamcmdNone🅱️🐧🍎>_🪟✓vscode1.60.0🅱️🐧🍎>_🪟✓✓yarn1.20.0🅱️🐧🍎>_🪟✓✓✓✓✓✓✓✓yay11.0.0🅱️🐧>_✓✓✓✓✓✓✓✓✓yum4.0.0🅱️🐧>_✓✓✓✓✓✓✓✓zypper1.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 managerIf your favorite manager is missing or does not support an operation, you can influence its implementation:open a ticket to document its outputorread the contribution guideand submit a pull request.I can do that work for you if youpurchase business support 🤝 or sponsor the project 🫶.InstallationAll installation methodsare available in the documentation.Below are the most popular ones:On macOSmpmis part of the officialHomebrewdefault tap, so you can install it with:$brewinstallmeta-package-managerFrom sourcespipxis the cleanest way to installmpmfrom sources on any platform:$pipxinstallmeta-package-managerExecutablesStandalone executables ofmpm's latest version are available as direct downloads for several platforms and architectures:Platformx86_64arm64Linux[^linux]Downloadmpm-linux-x64.binmacOSDownloadmpm-macos-x64.binDownloadmpm-macos-arm64.binWindowsDownloadmpm-windows-x64.exeQuickstartList installed packagesList all packages installed on current system:$mpminstalled╭─────────────────────────────┬─────────────────────────────┬─────────┬────────────────────╮│ 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 packagesList all packages installed for which an upgrade is available:$mpmoutdated╭──────────────┬─────────────┬─────────┬───────────────────┬────────────────╮│ 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 managersIf you wonder why your package manager doesn't seems to be identified, you can list all those recognized bympmwith:$mpm--all-managersmanagers╭────────────┬────────────────────┬────────────────┬──────────────────────────────┬────────────┬───────────╮│ 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 thecontribution guide.UsageOther subcommands and options are documented in:thedetailed help screensthelist of use-caseswhere you’ll find inspiration on how to leveragempmpower[^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.