<p align="center">
<a href="https://github.com/kdeldycke/meta-package-manager/">
<img src="https://raw.githubusercontent.com/kdeldycke/meta-package-manager/main/docs/assets/logo-banner.svg" alt="Meta Package Manager">
</a>
</p>
<a href="https://xkcd.com/1654/" alt="XKCD #1654: Universal Install Script">
<img align="right" width="20%" height="20%" src="http://imgs.xkcd.com/comics/universal_install_script.png"/>
</a>
[![Last release](https://img.shields.io/pypi/v/meta-package-manager.svg)](https://pypi.python.org/pypi/meta-package-manager)
[![Python versions](https://img.shields.io/pypi/pyversions/meta-package-manager.svg)](https://pypi.python.org/pypi/meta-package-manager)
[![Type checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)
[![Unittests status](https://github.com/kdeldycke/meta-package-manager/actions/workflows/tests.yaml/badge.svg?branch=main)](https://github.com/kdeldycke/meta-package-manager/actions/workflows/tests.yaml?query=branch%3Amain)
[![Coverage status](https://codecov.io/gh/kdeldycke/meta-package-manager/branch/main/graph/badge.svg)](https://app.codecov.io/gh/kdeldycke/meta-package-manager)
[![Documentation status](https://github.com/kdeldycke/meta-package-manager/actions/workflows/docs.yaml/badge.svg?branch=main)](https://github.com/kdeldycke/meta-package-manager/actions/workflows/docs.yaml?query=branch%3Amain)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6809571.svg)](https://doi.org/10.5281/zenodo.6809571)
**What is Meta Package Manager?**
- provides the `mpm` CLI, a wrapper around all package managers
- `mpm` is like [`yt-dlp`](https://github.com/yt-dlp/yt-dlp), but for package
managers instead of videos
- `mpm` solves [XKCD #1654 - *Universal Install Script*](https://xkcd.com/1654/)
---
## Features
<img align="right" width="30%" height="30%" src="https://raw.githubusercontent.com/kdeldycke/meta-package-manager/main/docs/assets/mpm-outdated-cli.png"/>
<img align="right" width="30%" height="30%" src="https://raw.githubusercontent.com/kdeldycke/meta-package-manager/main/docs/assets/mpm-managers-cli.png"/>
- Inventory and list all package managers available on the system.
- Supports macOS, Linux and Windows.
- [Standalone executables](#executables) for 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.
- Software Bill of Materials: export installed packages to [SPDX](https://spdx.dev) and [CycloneDX](https://cyclonedx.org) SBOM files.
- Pin-point commands to a subset of package managers (include/exclude
selectors).
- Support plain, versioned and [purl](https://github.com/package-url/purl-spec) package specifiers.
- Export output to JSON or print user-friendly tables.
- Shell auto-completion for Bash, Zsh and Fish.
- Provides a
[Xbar/SwiftBar plugin](https://kdeldycke.github.io/meta-package-manager/bar-plugin.html) for
friendly macOS integration.
- Because `mpm` try to wrap all other package managers, it became another
pathological case of [XKCD #927: Standards](https://xkcd.com/927/)
## Supported package managers and operations
<!-- operation-matrix-start -->
| 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`](https://atom.io/packages) [⚠️](https://github.blog/2022-06-08-sunsetting-atom/) | 1.0.0 | 🅱️ | 🐧 | 🍎 | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| [`apt`](https://wiki.debian.org/AptCLI) | 1.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ |
| [`apt-mint`](https://github.com/kdeldycke/meta-package-manager/issues/52) | 1.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ |
| [`brew`](https://brew.sh) | 2.7.0 | | 🐧 | 🍎 | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [`cargo`](https://doc.rust-lang.org/cargo/) | 1.0.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | | ✓ | ✓ | | | ✓ | | |
| [`cask`](https://github.com/Homebrew/homebrew-cask) | 2.7.0 | | | 🍎 | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [`choco`](https://chocolatey.org) | 2.0.0 | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| [`composer`](https://getcomposer.org) | 1.4.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ |
| [`dnf`](https://github.com/rpm-software-management/dnf) | 4.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ |
| [`emerge`](https://wiki.gentoo.org/wiki/Portage#emerge) | 3.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ |
| [`flatpak`](https://flatpak.org) | 1.2.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ |
| [`gem`](https://rubygems.org) | 2.5.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ |
| [`mas`](https://github.com/argon/mas) | 1.6.1 | | | 🍎 | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| [`npm`](https://www.npmjs.com) | 4.0.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
| [`opkg`](https://git.yoctoproject.org/cgit/cgit.cgi/opkg/) | 0.2.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | |
| [`pacaur`](https://github.com/E5ten/pacaur) | 4.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [`pacman`](https://wiki.archlinux.org/title/pacman) | 5.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [`paru`](https://github.com/Morganamilo/paru) | 1.9.3 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [`pip`](https://pip.pypa.io) | 10.0.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | |
| [`pipx`](https://pipx.pypa.io) | 1.0.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | |
| [`pkg`](https://github.com/freebsd/pkg) | 1.11 | 🅱️ | 🐧 | 🍎 | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [`scoop`](https://scoop.sh) | 0.2.4 | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [`snap`](https://snapcraft.io) | 2.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | |
| [`steamcmd`](https://developer.valvesoftware.com/wiki/SteamCMD) | None | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | | | | ✓ | | | | | |
| [`uv`](https://astral.sh) | 0.1.45 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | | | ✓ | ✓ | | ✓ | | |
| [`vscode`](https://code.visualstudio.com) | 1.60.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | | | ✓ | | | | | |
| [`winget`](https://github.com/microsoft/winget-cli) | 1.7 | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | |
| [`yarn`](https://yarnpkg.com) | 1.20.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ |
| [`yay`](https://github.com/Jguer/yay) | 11.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| [`yum`](http://yum.baseurl.org) | 4.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ |
| [`zypper`](https://en.opensuse.org/Portal: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.
<!-- operation-matrix-end -->
> **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](https://github.com/kdeldycke/meta-package-manager/issues/new?assignees=&labels=%F0%9F%8E%81+feature+request&template=new-package-manager.yaml) or [read the contribution guide](https://kdeldycke.github.io/meta-package-manager/contributing.html) and submit a pull request.
>
> I can do that work for you if you [purchase business support 🤝 or sponsor the project 🫶](https://github.com/sponsors/kdeldycke).
## Installation
[All installation methods](https://kdeldycke.github.io/meta-package-manager/install.html) are available in the documentation.
Below are the most popular ones:
### macOS
`mpm` is part of the official [Homebrew](https://brew.sh) default tap, so you can install it with:
```shell-session
$ brew install meta-package-manager
```
### Windows
`mpm` is available in the `main` repository of [Scoop](https://scoop.sh), so you just need to:
```pwsh-session
> scoop install main/meta-package-manager
```
### From sources
[`pipx`](https://pipx.pypa.io) is the cleanest way to install `mpm` from sources on any platform:
```shell-session
$ 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`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-linux-x64.bin) | |
| **macOS** | [Download `mpm-macos-x64.bin`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-macos-x64.bin) | [Download `mpm-macos-arm64.bin`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-macos-arm64.bin) |
| **Windows** | [Download `mpm-windows-x64.exe`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-windows-x64.exe) | |
## Quickstart
### List installed packages
List all packages installed on current system:
```shell-session
$ 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:
```shell-session
$ 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:
```shell-session
$ 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](https://kdeldycke.github.io/meta-package-manager/contributing.html).
## Usage
Other subcommands and options are documented in:
- the
[detailed help screens](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html)
- the
[list of use-cases](https://kdeldycke.github.io/meta-package-manager/usecase.html)
where you’ll find inspiration on how to leverage `mpm` power
[^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.
Raw data
{
"_id": null,
"home_page": null,
"name": "meta-package-manager",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "CLI, apm, apt, apt-mint, atom, brew, cargo, cask, choco, chocotaley, composer, cyclonedx, dnf, emerge, flatpak, gem, homebrew, mac app store, macos, mas, node, npm, opkg, package, package url, pacaur, pacman, paru, php composer, pip, pipx, pkg, plugin, portage, purl, ruby, rust, sbom, scoop, snap, spdx, steamcmd, uv, visual studio code, vscode, xbar, swiftbar, winget, yarn, yay, yum, zypper",
"author": null,
"author_email": "Kevin Deldycke <kevin@deldycke.com>",
"download_url": "https://files.pythonhosted.org/packages/4f/7c/f31914ddedbd51616fb0e765bc1d25a8c4ec038a12c4f0b76206ce928443/meta_package_manager-5.18.0.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <a href=\"https://github.com/kdeldycke/meta-package-manager/\">\n <img src=\"https://raw.githubusercontent.com/kdeldycke/meta-package-manager/main/docs/assets/logo-banner.svg\" alt=\"Meta Package Manager\">\n </a>\n</p>\n\n<a href=\"https://xkcd.com/1654/\" alt=\"XKCD #1654: Universal Install Script\">\n<img align=\"right\" width=\"20%\" height=\"20%\" src=\"http://imgs.xkcd.com/comics/universal_install_script.png\"/>\n</a>\n\n[![Last release](https://img.shields.io/pypi/v/meta-package-manager.svg)](https://pypi.python.org/pypi/meta-package-manager)\n[![Python versions](https://img.shields.io/pypi/pyversions/meta-package-manager.svg)](https://pypi.python.org/pypi/meta-package-manager)\n[![Type checked with mypy](http://www.mypy-lang.org/static/mypy_badge.svg)](http://mypy-lang.org/)\n[![Unittests status](https://github.com/kdeldycke/meta-package-manager/actions/workflows/tests.yaml/badge.svg?branch=main)](https://github.com/kdeldycke/meta-package-manager/actions/workflows/tests.yaml?query=branch%3Amain)\n[![Coverage status](https://codecov.io/gh/kdeldycke/meta-package-manager/branch/main/graph/badge.svg)](https://app.codecov.io/gh/kdeldycke/meta-package-manager)\n[![Documentation status](https://github.com/kdeldycke/meta-package-manager/actions/workflows/docs.yaml/badge.svg?branch=main)](https://github.com/kdeldycke/meta-package-manager/actions/workflows/docs.yaml?query=branch%3Amain)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.6809571.svg)](https://doi.org/10.5281/zenodo.6809571)\n\n**What is Meta Package Manager?**\n\n- provides the `mpm` CLI, a wrapper around all package managers\n- `mpm` is like [`yt-dlp`](https://github.com/yt-dlp/yt-dlp), but for package\n managers instead of videos\n- `mpm` solves [XKCD #1654 - *Universal Install Script*](https://xkcd.com/1654/)\n\n---\n\n## Features\n\n<img align=\"right\" width=\"30%\" height=\"30%\" src=\"https://raw.githubusercontent.com/kdeldycke/meta-package-manager/main/docs/assets/mpm-outdated-cli.png\"/>\n\n<img align=\"right\" width=\"30%\" height=\"30%\" src=\"https://raw.githubusercontent.com/kdeldycke/meta-package-manager/main/docs/assets/mpm-managers-cli.png\"/>\n\n- Inventory and list all package managers available on the system.\n- Supports macOS, Linux and Windows.\n- [Standalone executables](#executables) for Linux, macOS and Windows.\n- List installed packages.\n- List duplicate installed packages.\n- Search for packages.\n- Install a package.\n- Remove a package.\n- List outdated packages.\n- Sync local package infos.\n- Upgrade all outdated packages.\n- Backup list of installed packages to TOML file.\n- Restore/install list of packages from TOML files.\n- Software Bill of Materials: export installed packages to [SPDX](https://spdx.dev) and [CycloneDX](https://cyclonedx.org) SBOM files.\n- Pin-point commands to a subset of package managers (include/exclude\n selectors).\n- Support plain, versioned and [purl](https://github.com/package-url/purl-spec) package specifiers.\n- Export output to JSON or print user-friendly tables.\n- Shell auto-completion for Bash, Zsh and Fish.\n- Provides a\n [Xbar/SwiftBar plugin](https://kdeldycke.github.io/meta-package-manager/bar-plugin.html) for\n friendly macOS integration.\n- Because `mpm` try to wrap all other package managers, it became another\n pathological case of [XKCD #927: Standards](https://xkcd.com/927/)\n\n## Supported package managers and operations\n\n<!-- operation-matrix-start -->\n\n| Package manager | Min. version | BSD[^bsd_without_macos] | Linux[^linux] | macOS | Unix[^unix] | Windows | `installed` | `outdated` | `search` | `install` | `upgrade` | `upgrade_all` | `remove` | `sync` | `cleanup` |\n| --------------------------------------------------------------------------------------- | ------------ | :---------------------: | :-----------: | :---: | :---------: | :-----: | :---------: | :--------: | :------: | :-------: | :-------: | :-----------: | :------: | :----: | :-------: |\n| [`apm`](https://atom.io/packages) [\u26a0\ufe0f](https://github.blog/2022-06-08-sunsetting-atom/) | 1.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | | \ud83e\ude9f | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | | |\n| [`apt`](https://wiki.debian.org/AptCLI) | 1.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | \u2713 | \u2713 |\n| [`apt-mint`](https://github.com/kdeldycke/meta-package-manager/issues/52) | 1.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | \u2713 | \u2713 |\n| [`brew`](https://brew.sh) | 2.7.0 | | \ud83d\udc27 | \ud83c\udf4e | | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 |\n| [`cargo`](https://doc.rust-lang.org/cargo/) | 1.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | \u2713 | | \u2713 | \u2713 | | | \u2713 | | |\n| [`cask`](https://github.com/Homebrew/homebrew-cask) | 2.7.0 | | | \ud83c\udf4e | | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 |\n| [`choco`](https://chocolatey.org) | 2.0.0 | | | | | \ud83e\ude9f | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | | |\n| [`composer`](https://getcomposer.org) | 1.4.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | | \u2713 |\n| [`dnf`](https://github.com/rpm-software-management/dnf) | 4.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | \u2713 | \u2713 |\n| [`emerge`](https://wiki.gentoo.org/wiki/Portage#emerge) | 3.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | \u2713 | \u2713 |\n| [`flatpak`](https://flatpak.org) | 1.2.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | | \u2713 |\n| [`gem`](https://rubygems.org) | 2.5.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | \u2713 |\n| [`mas`](https://github.com/argon/mas) | 1.6.1 | | | \ud83c\udf4e | | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | | |\n| [`npm`](https://www.npmjs.com) | 4.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | |\n| [`opkg`](https://git.yoctoproject.org/cgit/cgit.cgi/opkg/) | 0.2.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | \u2713 | |\n| [`pacaur`](https://github.com/E5ten/pacaur) | 4.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 |\n| [`pacman`](https://wiki.archlinux.org/title/pacman) | 5.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 |\n| [`paru`](https://github.com/Morganamilo/paru) | 1.9.3 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 |\n| [`pip`](https://pip.pypa.io) | 10.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | \u2713 | \u2713 | | \u2713 | \u2713 | \u2713 | \u2713 | | |\n| [`pipx`](https://pipx.pypa.io) | 1.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | \u2713 | \u2713 | | \u2713 | \u2713 | \u2713 | \u2713 | | |\n| [`pkg`](https://github.com/freebsd/pkg) | 1.11 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 |\n| [`scoop`](https://scoop.sh) | 0.2.4 | | | | | \ud83e\ude9f | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 |\n| [`snap`](https://snapcraft.io) | 2.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | | |\n| [`steamcmd`](https://developer.valvesoftware.com/wiki/SteamCMD) | None | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | | | | \u2713 | | | | | |\n| [`uv`](https://astral.sh) | 0.1.45 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | \u2713 | | | \u2713 | \u2713 | | \u2713 | | |\n| [`vscode`](https://code.visualstudio.com) | 1.60.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | \u2713 | | | \u2713 | | | | | |\n| [`winget`](https://github.com/microsoft/winget-cli) | 1.7 | | | | | \ud83e\ude9f | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | |\n| [`yarn`](https://yarnpkg.com) | 1.20.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | \ud83c\udf4e | `>_` | \ud83e\ude9f | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | \u2713 |\n| [`yay`](https://github.com/Jguer/yay) | 11.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 |\n| [`yum`](http://yum.baseurl.org) | 4.0.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | \u2713 | \u2713 |\n| [`zypper`](https://en.opensuse.org/Portal:Zypper) | 1.14.0 | \ud83c\udd71\ufe0f | \ud83d\udc27 | | `>_` | | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | \u2713 | | \u2713 | \u2713 |\n\n[^bsd_without_macos]: BSD: FreeBSD, NetBSD, OpenBSD, SunOS.\n\n[^linux]: Linux: Linux, Windows Subsystem for Linux v2.\n\n[^unix]: Unix: AIX, Cygwin, GNU/Hurd, Solaris, Windows Subsystem for Linux v1.\n\n<!-- operation-matrix-end -->\n\n> **Note**: Missing manager\n>\n> If your favorite manager is missing or does not support an operation, you can influence its implementation: [open a ticket to document its output](https://github.com/kdeldycke/meta-package-manager/issues/new?assignees=&labels=%F0%9F%8E%81+feature+request&template=new-package-manager.yaml) or [read the contribution guide](https://kdeldycke.github.io/meta-package-manager/contributing.html) and submit a pull request.\n>\n> I can do that work for you if you [purchase business support \ud83e\udd1d or sponsor the project \ud83e\udef6](https://github.com/sponsors/kdeldycke).\n\n## Installation\n\n[All installation methods](https://kdeldycke.github.io/meta-package-manager/install.html) are available in the documentation.\n\nBelow are the most popular ones:\n\n### macOS\n\n`mpm` is part of the official [Homebrew](https://brew.sh) default tap, so you can install it with:\n\n```shell-session\n$ brew install meta-package-manager\n```\n\n### Windows\n\n`mpm` is available in the `main` repository of [Scoop](https://scoop.sh), so you just need to:\n\n```pwsh-session\n> scoop install main/meta-package-manager\n```\n\n### From sources\n\n[`pipx`](https://pipx.pypa.io) is the cleanest way to install `mpm` from sources on any platform:\n\n```shell-session\n$ pipx install meta-package-manager\n```\n\n### Executables\n\nStandalone executables of `mpm`'s latest version are available as direct downloads for several platforms and architectures:\n\n| Platform | `x86_64` | `arm64` |\n| ----------------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |\n| **Linux**[^linux] | [Download `mpm-linux-x64.bin`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-linux-x64.bin) | |\n| **macOS** | [Download `mpm-macos-x64.bin`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-macos-x64.bin) | [Download `mpm-macos-arm64.bin`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-macos-arm64.bin) |\n| **Windows** | [Download `mpm-windows-x64.exe`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-windows-x64.exe) | |\n\n## Quickstart\n\n### List installed packages\n\nList all packages installed on current system:\n\n```shell-session\n$ mpm installed\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 Package name \u2502 ID \u2502 Manager \u2502 Installed version \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 github \u2502 github \u2502 apm \u2502 0.36.9 \u2502\n\u2502 update-package-dependencies \u2502 update-package-dependencies \u2502 apm \u2502 0.13.1 \u2502\n\u2502 rust \u2502 rust \u2502 brew \u2502 1.55.0 \u2502\n\u2502 x264 \u2502 x264 \u2502 brew \u2502 r3060 \u2502\n\u2502 atom \u2502 atom \u2502 cask \u2502 1.58.0 \u2502\n\u2502 visual-studio-code \u2502 visual-studio-code \u2502 cask \u2502 1.52.0 \u2502\n\u2502 nokogiri \u2502 nokogiri \u2502 gem \u2502 x86_64-darwin \u2502\n\u2502 rake \u2502 rake \u2502 gem \u2502 13.0.3 \u2502\n\u2502 iMovie \u2502 408981434 \u2502 mas \u2502 10.2.5 \u2502\n\u2502 Telegram \u2502 747648890 \u2502 mas \u2502 8.1 \u2502\n\u2502 npm \u2502 npm \u2502 npm \u2502 7.24.0 \u2502\n\u2502 raven \u2502 raven \u2502 npm \u2502 2.6.4 \u2502\n\u2502 jupyterlab \u2502 jupyterlab \u2502 pip \u2502 3.1.14 \u2502\n\u2502 Sphinx \u2502 Sphinx \u2502 pip \u2502 4.2.0 \u2502\n\u2502 ms-python.python \u2502 ms-python.python \u2502 vscode \u2502 2021.10.1317843341 \u2502\n\u2502 ms-toolsai.jupyter \u2502 ms-toolsai.jupyter \u2502 vscode \u2502 2021.9.1001312534 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n16 packages total (brew: 2, pip: 2, apm: 2, gem: 2, cask: 2, mas: 2, vscode: 2, npm: 2, composer: 0).\n```\n\n### List outdated packages\n\nList all packages installed for which an upgrade is available:\n\n```shell-session\n$ mpm outdated\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 Package name \u2502 ID \u2502 Manager \u2502 Installed version \u2502 Latest version \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 curl \u2502 curl \u2502 brew \u2502 7.79.1 \u2502 7.79.1_1 \u2502\n\u2502 git \u2502 git \u2502 brew \u2502 2.33.0 \u2502 2.33.0_1 \u2502\n\u2502 openssl@1.1 \u2502 openssl@1.1 \u2502 brew \u2502 1.1.1l \u2502 1.1.1l_1 \u2502\n\u2502 rake \u2502 rake \u2502 gem \u2502 13.0.3 \u2502 13.0.6 \u2502\n\u2502 Telegram \u2502 747648890 \u2502 mas \u2502 8.1 \u2502 8.1.3 \u2502\n\u2502 npm \u2502 npm@8.0.0 \u2502 npm \u2502 7.24.0 \u2502 8.0.0 \u2502\n\u2502 pip \u2502 pip \u2502 pip \u2502 21.2.4 \u2502 21.3 \u2502\n\u2502 regex \u2502 regex \u2502 pip \u2502 2021.9.30 \u2502 2021.10.8 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n8 packages total (brew: 3, pip: 2, gem: 1, mas: 1, npm: 1, apm: 0, cask: 0, composer: 0).\n```\n\n### List managers\n\nIf you wonder why your package manager doesn't seems to be identified, you can list all those recognized by `mpm` with:\n\n```shell-session\n$ mpm --all-managers managers\n\u256d\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502 Manager ID \u2502 Name \u2502 Supported \u2502 CLI \u2502 Executable \u2502 Version \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 apm \u2502 Atom's apm \u2502 \u2713 \u2502 \u2718 apm not found \u2502 \u2502 \u2502\n\u2502 apt \u2502 APT \u2502 \u2718 Linux only \u2502 \u2713 /usr/bin/apt \u2502 \u2713 \u2502 \u2718 \u2502\n\u2502 apt-mint \u2502 Linux Mint's apt \u2502 \u2718 Linux only \u2502 \u2713 /usr/bin/apt \u2502 \u2713 \u2502 \u2718 \u2502\n\u2502 brew \u2502 Homebrew Formulae \u2502 \u2713 \u2502 \u2713 /opt/homebrew/bin/brew \u2502 \u2713 \u2502 \u2713 3.6.3 \u2502\n\u2502 cargo \u2502 Rust's cargo \u2502 \u2713 \u2502 \u2713 /opt/homebrew/bin/cargo \u2502 \u2713 \u2502 \u2713 1.64.0 \u2502\n\u2502 cask \u2502 Homebrew Cask \u2502 \u2713 \u2502 \u2713 /opt/homebrew/bin/brew \u2502 \u2713 \u2502 \u2713 3.6.3 \u2502\n\u2502 choco \u2502 Chocolatey \u2502 \u2718 Windows only \u2502 \u2718 choco not found \u2502 \u2502 \u2502\n\u2502 composer \u2502 PHP's Composer \u2502 \u2713 \u2502 \u2713 /opt/homebrew/bin/composer \u2502 \u2713 \u2502 \u2713 2.4.2 \u2502\n\u2502 dnf \u2502 DNF \u2502 \u2718 Linux only \u2502 \u2718 dnf not found \u2502 \u2502 \u2502\n\u2502 emerge \u2502 Emerge \u2502 \u2718 Linux only \u2502 \u2718 emerge not found \u2502 \u2502 \u2502\n\u2502 flatpak \u2502 Flatpak \u2502 \u2718 Linux only \u2502 \u2718 flatpak not found \u2502 \u2502 \u2502\n\u2502 gem \u2502 Ruby Gems \u2502 \u2713 \u2502 \u2713 /usr/bin/gem \u2502 \u2713 \u2502 \u2713 3.0.3.1 \u2502\n\u2502 mas \u2502 Mac AppStore \u2502 \u2713 \u2502 \u2713 /opt/homebrew/bin/mas \u2502 \u2713 \u2502 \u2713 1.8.6 \u2502\n\u2502 npm \u2502 Node's npm \u2502 \u2713 \u2502 \u2713 /opt/homebrew/bin/npm \u2502 \u2713 \u2502 \u2713 8.19.2 \u2502\n\u2502 opkg \u2502 OPKG \u2502 \u2718 Linux only \u2502 \u2718 opkg not found \u2502 \u2502 \u2502\n\u2502 pacman \u2502 Pacman \u2502 \u2718 Linux only \u2502 \u2718 pacman not found \u2502 \u2502 \u2502\n\u2502 paru \u2502 Paru \u2502 \u2718 Linux only \u2502 \u2718 paru not found \u2502 \u2502 \u2502\n\u2502 pip \u2502 Pip \u2502 \u2713 \u2502 \u2713 ~/.pyenv/shims/python3 \u2502 \u2713 \u2502 \u2713 22.2.2 \u2502\n\u2502 pipx \u2502 Pipx \u2502 \u2713 \u2502 \u2713 /opt/homebrew/bin/pipx \u2502 \u2713 \u2502 \u2713 1.1.0 \u2502\n\u2502 scoop \u2502 Scoop \u2502 \u2718 Windows only \u2502 \u2718 scoop not found \u2502 \u2502 \u2502\n\u2502 snap \u2502 Snap \u2502 \u2718 Linux only \u2502 \u2718 snap not found \u2502 \u2502 \u2502\n\u2502 steamcmd \u2502 Valve Steam \u2502 \u2713 \u2502 \u2718 steamcmd not found \u2502 \u2502 \u2502\n\u2502 vscode \u2502 Visual Studio Code \u2502 \u2713 \u2502 \u2713 /opt/homebrew/bin/code \u2502 \u2713 \u2502 \u2713 1.71.2 \u2502\n\u2502 yarn \u2502 Node's yarn \u2502 \u2713 \u2502 \u2713 /opt/homebrew/bin/yarn \u2502 \u2713 \u2502 \u2713 1.22.19 \u2502\n\u2502 yay \u2502 Yay \u2502 \u2718 Linux only \u2502 \u2718 yay not found \u2502 \u2502 \u2502\n\u2502 yum \u2502 YUM \u2502 \u2718 Linux only \u2502 \u2718 yum not found \u2502 \u2502 \u2502\n\u2502 zypper \u2502 Zypper \u2502 \u2718 Linux only \u2502 \u2718 zypper not found \u2502 \u2502 \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n```\n\nIf your favorite manager is not supported yet, you can help! See the [contribution guide](https://kdeldycke.github.io/meta-package-manager/contributing.html).\n\n## Usage\n\nOther subcommands and options are documented in:\n\n- the\n [detailed help screens](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html)\n- the\n [list of use-cases](https://kdeldycke.github.io/meta-package-manager/usecase.html)\n where you\u2019ll find inspiration on how to leverage `mpm` power\n\n[^bsd_without_macos]: BSD: FreeBSD, NetBSD, OpenBSD, SunOS.\n\n[^linux]: Linux: Linux, Windows Subsystem for Linux v2.\n\n[^unix]: Unix: AIX, Cygwin, GNU/Hurd, Solaris, Windows Subsystem for Linux v1.\n",
"bugtrack_url": null,
"license": null,
"summary": "\ud83c\udf81 wraps all package managers with a unifying CLI",
"version": "5.18.0",
"project_urls": {
"Changelog": "https://kdeldycke.github.io/meta-package-manager/changelog.html",
"Documentation": "https://kdeldycke.github.io/meta-package-manager",
"Funding": "https://github.com/sponsors/kdeldycke",
"Homepage": "https://github.com/kdeldycke/meta-package-manager",
"Issues": "https://github.com/kdeldycke/meta-package-manager/issues",
"Repository": "https://github.com/kdeldycke/meta-package-manager"
},
"split_keywords": [
"cli",
" apm",
" apt",
" apt-mint",
" atom",
" brew",
" cargo",
" cask",
" choco",
" chocotaley",
" composer",
" cyclonedx",
" dnf",
" emerge",
" flatpak",
" gem",
" homebrew",
" mac app store",
" macos",
" mas",
" node",
" npm",
" opkg",
" package",
" package url",
" pacaur",
" pacman",
" paru",
" php composer",
" pip",
" pipx",
" pkg",
" plugin",
" portage",
" purl",
" ruby",
" rust",
" sbom",
" scoop",
" snap",
" spdx",
" steamcmd",
" uv",
" visual studio code",
" vscode",
" xbar",
" swiftbar",
" winget",
" yarn",
" yay",
" yum",
" zypper"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e78eaf308702fce8f551707f0e1a6b437df13fb25ff5568c0f45dcf5ea3a8eec",
"md5": "f9ff8cf64635bf9daeb0810f6497a40d",
"sha256": "77e14f637da7f4c692b70c641de844560beeb1189734928ce3bb7cfd254a8282"
},
"downloads": -1,
"filename": "meta_package_manager-5.18.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f9ff8cf64635bf9daeb0810f6497a40d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 143147,
"upload_time": "2024-08-02T09:54:18",
"upload_time_iso_8601": "2024-08-02T09:54:18.336250Z",
"url": "https://files.pythonhosted.org/packages/e7/8e/af308702fce8f551707f0e1a6b437df13fb25ff5568c0f45dcf5ea3a8eec/meta_package_manager-5.18.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4f7cf31914ddedbd51616fb0e765bc1d25a8c4ec038a12c4f0b76206ce928443",
"md5": "9018917048a02400e519fd4a8ae7669d",
"sha256": "010c6503a003ccca8b73450f7d913b90036f5b92553fad745b7c01a366127a16"
},
"downloads": -1,
"filename": "meta_package_manager-5.18.0.tar.gz",
"has_sig": false,
"md5_digest": "9018917048a02400e519fd4a8ae7669d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 137535,
"upload_time": "2024-08-02T09:54:20",
"upload_time_iso_8601": "2024-08-02T09:54:20.509207Z",
"url": "https://files.pythonhosted.org/packages/4f/7c/f31914ddedbd51616fb0e765bc1d25a8c4ec038a12c4f0b76206ce928443/meta_package_manager-5.18.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-02 09:54:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sponsors",
"github_project": "kdeldycke",
"github_not_found": true,
"lcname": "meta-package-manager"
}