diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-05-17 05:18:39 +0000 |
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-05-17 05:18:39 +0000 |
| commit | b3d25d7232a4ce3370fa12bf70abf0a850fe9a75 (patch) | |
| tree | 379a8dd8267098f49d24e13a311a44bf36e8e703 | |
| parent | 4f9c0a61c0f91640b58eb00fe1d002c38ddf4832 (diff) | |
automatic import of python-meta-package-manager
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-meta-package-manager.spec | 783 | ||||
| -rw-r--r-- | sources | 1 |
3 files changed, 785 insertions, 0 deletions
@@ -0,0 +1 @@ +/meta_package_manager-5.13.1.tar.gz diff --git a/python-meta-package-manager.spec b/python-meta-package-manager.spec new file mode 100644 index 0000000..baeac37 --- /dev/null +++ b/python-meta-package-manager.spec @@ -0,0 +1,783 @@ +%global _empty_manifest_terminate_build 0 +Name: python-meta-package-manager +Version: 5.13.1 +Release: 1 +Summary: 🎁 wraps all package managers with a unifying CLI +License: GPL-2.0-or-later +URL: https://github.com/kdeldycke/meta-package-manager +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/a0/94/b9dbfbf058f40ce3c64257806ae8ae76f377fc28f627b9b40777d26a742c/meta_package_manager-5.13.1.tar.gz +BuildArch: noarch + +Requires: python3-boltons +Requires: python3-click +Requires: python3-click-extra +Requires: python3-packageurl-python +Requires: python3-tabulate[widechars] +Requires: python3-tomli +Requires: python3-tomli_w +Requires: python3-typing-extensions +Requires: python3-xmltodict + +%description +<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> + +[](https://pypi.python.org/pypi/meta-package-manager) +[](https://pypi.python.org/pypi/meta-package-manager) +[](http://mypy-lang.org/) +[](https://github.com/kdeldycke/meta-package-manager/actions/workflows/tests.yaml?query=branch%3Amain) +[](https://app.codecov.io/gh/kdeldycke/meta-package-manager) +[](https://github.com/kdeldycke/meta-package-manager/actions/workflows/docs.yaml?query=branch%3Amain) +[](https://zenodo.org/badge/latestdoi/65922807) + +**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. +- Pin-point commands to a subset of package managers (include/exclude + selectors). +- Support plain, versionned 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) | 0.10.9 | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | +| [`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://pypa.github.io/pipx/) | 1.0.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | | +| [`scoop`](https://scoop.sh) | 0.2.4 | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| [`snap`](https://snapcraft.io) | 2.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | +| [`steamcmd`](https://developer.valvesoftware.com/wiki/SteamCMD) | None | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | | | | ✓ | | | | | | +| [`vscode`](https://code.visualstudio.com) | 1.60.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | | | ✓ | | | | | | +| [`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 + +### From sources + +Easiest way is to install `mpm` from sources with [`pipx`](https://pypa.github.io/pipx/): + +```shell-session +$ pipx install meta-package-manager +``` + +Other +[alternatives installation methods](https://kdeldycke.github.io/meta-package-manager/install.html) +are available in the documentation. + +### Executables + +Standalone executables of `mpm`'s latest version are available for several platforms and architectures: + +| Platform | `x86_64` | +| ----------- | -------------------------------------------------------------------------------------------------------------------- | +| **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) | +| **Windows** | [Download `mpm-windows-x64.exe`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-windows-x64.exe) | + +## Quickstart + +### List managers + +List all supported package managers and their status on current system (macOS +in this case): + +```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 [contibution guide](https://kdeldycke.github.io/meta-package-manager/contributing.html). + +### 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). +``` + +## 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 + + + +%package -n python3-meta-package-manager +Summary: 🎁 wraps all package managers with a unifying CLI +Provides: python-meta-package-manager +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-meta-package-manager +<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> + +[](https://pypi.python.org/pypi/meta-package-manager) +[](https://pypi.python.org/pypi/meta-package-manager) +[](http://mypy-lang.org/) +[](https://github.com/kdeldycke/meta-package-manager/actions/workflows/tests.yaml?query=branch%3Amain) +[](https://app.codecov.io/gh/kdeldycke/meta-package-manager) +[](https://github.com/kdeldycke/meta-package-manager/actions/workflows/docs.yaml?query=branch%3Amain) +[](https://zenodo.org/badge/latestdoi/65922807) + +**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. +- Pin-point commands to a subset of package managers (include/exclude + selectors). +- Support plain, versionned 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) | 0.10.9 | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | +| [`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://pypa.github.io/pipx/) | 1.0.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | | +| [`scoop`](https://scoop.sh) | 0.2.4 | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| [`snap`](https://snapcraft.io) | 2.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | +| [`steamcmd`](https://developer.valvesoftware.com/wiki/SteamCMD) | None | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | | | | ✓ | | | | | | +| [`vscode`](https://code.visualstudio.com) | 1.60.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | | | ✓ | | | | | | +| [`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 + +### From sources + +Easiest way is to install `mpm` from sources with [`pipx`](https://pypa.github.io/pipx/): + +```shell-session +$ pipx install meta-package-manager +``` + +Other +[alternatives installation methods](https://kdeldycke.github.io/meta-package-manager/install.html) +are available in the documentation. + +### Executables + +Standalone executables of `mpm`'s latest version are available for several platforms and architectures: + +| Platform | `x86_64` | +| ----------- | -------------------------------------------------------------------------------------------------------------------- | +| **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) | +| **Windows** | [Download `mpm-windows-x64.exe`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-windows-x64.exe) | + +## Quickstart + +### List managers + +List all supported package managers and their status on current system (macOS +in this case): + +```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 [contibution guide](https://kdeldycke.github.io/meta-package-manager/contributing.html). + +### 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). +``` + +## 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 + + + +%package help +Summary: Development documents and examples for meta-package-manager +Provides: python3-meta-package-manager-doc +%description help +<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> + +[](https://pypi.python.org/pypi/meta-package-manager) +[](https://pypi.python.org/pypi/meta-package-manager) +[](http://mypy-lang.org/) +[](https://github.com/kdeldycke/meta-package-manager/actions/workflows/tests.yaml?query=branch%3Amain) +[](https://app.codecov.io/gh/kdeldycke/meta-package-manager) +[](https://github.com/kdeldycke/meta-package-manager/actions/workflows/docs.yaml?query=branch%3Amain) +[](https://zenodo.org/badge/latestdoi/65922807) + +**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. +- Pin-point commands to a subset of package managers (include/exclude + selectors). +- Support plain, versionned 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) | 0.10.9 | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | +| [`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://pypa.github.io/pipx/) | 1.0.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | | +| [`scoop`](https://scoop.sh) | 0.2.4 | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | +| [`snap`](https://snapcraft.io) | 2.0.0 | 🅱️ | 🐧 | | `>_` | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | +| [`steamcmd`](https://developer.valvesoftware.com/wiki/SteamCMD) | None | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | | | | ✓ | | | | | | +| [`vscode`](https://code.visualstudio.com) | 1.60.0 | 🅱️ | 🐧 | 🍎 | `>_` | 🪟 | ✓ | | | ✓ | | | | | | +| [`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 + +### From sources + +Easiest way is to install `mpm` from sources with [`pipx`](https://pypa.github.io/pipx/): + +```shell-session +$ pipx install meta-package-manager +``` + +Other +[alternatives installation methods](https://kdeldycke.github.io/meta-package-manager/install.html) +are available in the documentation. + +### Executables + +Standalone executables of `mpm`'s latest version are available for several platforms and architectures: + +| Platform | `x86_64` | +| ----------- | -------------------------------------------------------------------------------------------------------------------- | +| **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) | +| **Windows** | [Download `mpm-windows-x64.exe`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-windows-x64.exe) | + +## Quickstart + +### List managers + +List all supported package managers and their status on current system (macOS +in this case): + +```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 [contibution guide](https://kdeldycke.github.io/meta-package-manager/contributing.html). + +### 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). +``` + +## 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 + + + +%prep +%autosetup -n meta-package-manager-5.13.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-meta-package-manager -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 17 2023 Python_Bot <Python_Bot@openeuler.org> - 5.13.1-1 +- Package Spec generated @@ -0,0 +1 @@ +a57e2073bb888d0ab9cf8c6ebf97a327 meta_package_manager-5.13.1.tar.gz |
