kdeldycke/meta-package-manager

GitHub: kdeldycke/meta-package-manager

一个统一包装所有包管理器的 CLI 工具,解决跨平台包管理命令碎片化问题。

Stars: 609 | Forks: 48

Meta Package Manager

[![最新发布](https://img.shields.io/pypi/v/meta-package-manager.svg)](https://pypi.org/project/meta-package-manager) [![Python 版本](https://img.shields.io/pypi/pyversions/meta-package-manager.svg)](https://pypi.org/project/meta-package-manager) [![下载数](https://static.pepy.tech/badge/meta_package_manager/month)](https://pepy.tech/projects/meta_package_manager) [![单元测试状态](https://img.shields.io/github/actions/workflow/status/kdeldycke/meta-package-manager/tests.yaml?branch=main&label=%F0%9F%94%AC%20Tests)](https://github.com/kdeldycke/meta-package-manager/actions/workflows/tests.yaml?query=branch%3Amain) [![代码覆盖率状态](https://codecov.io/gh/kdeldycke/meta-package-manager/branch/main/graph/badge.svg)](https://app.codecov.io/gh/kdeldycke/meta-package-manager) [![文档状态](https://img.shields.io/github/actions/workflow/status/kdeldycke/meta-package-manager/docs.yaml?branch=main&label=%F0%9F%93%9A%20Docs)](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) **什么是 Meta Package Manager?** - 提供了 `mpm` CLI,一个封装了所有包管理器的工具 - `mpm` 就像是包管理器界的 [`yt-dlp`](https://github.com/yt-dlp/yt-dlp),只不过针对的是包管理器而不是视频 - `mpm` 解决了 [XKCD #1654 - *通用安装脚本*](https://xkcd.com/1654/) 中的困境 ## 快速开始 借助 [`uv`](https://docs.astral.sh/uv/getting-started/installation/),你可以通过单条命令在任何平台上运行 `mpm`,无需安装或使用 venv: ``` $ uvx meta-package-manager ``` ## 功能特性 - 盘点并列出系统上可用的所有[包管理器](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-managers)。 - 支持 macOS、Linux 和 Windows。 - 提供 Linux、macOS 和 Windows 的[独立可执行文件](#executables)。 - [列出已安装的包](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-installed)。 - [列出重复安装的包](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#cmdoption-mpm-installed-d)。 - [搜索包](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-search)。 - [安装包](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-install)。 - [移除包](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-remove)。 - [列出过时的包](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-outdated)。 - [同步本地包信息](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-sync)。 - [升级所有过时的包](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-upgrade)。 - 通过发布时间的冷却机制来[缓解供应链攻击](https://kdeldycke.github.io/meta-package-manager/cooldown.html),拒绝安装过于新近的版本:`mpm --cooldown "7 days" upgrade --all`。 - 将[已安装的包快照](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-dump)导出为 TOML 清单或 Brewfile。 - 从 TOML 文件中[恢复/安装包列表](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-restore)。 - [软件物料清单](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm-sbom):将已安装的包导出为 [SPDX](https://spdx.dev) 和 [CycloneDX](https://cyclonedx.org) SBOM 文件。 - 精确指定命令作用于[包管理器子集](https://kdeldycke.github.io/meta-package-manager/usecase.html)(包含/排除选择器)。 - 支持普通、带版本号的以及 [purl](https://github.com/package-url/purl-spec) 包标识符。 - 将输出导出为 [JSON 或用户友好的表格](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html#mpm)。 - 支持 Bash、Zsh 和 Fish 的 [Shell 自动补全](https://kdeldycke.github.io/meta-package-manager/install.html)。 - 提供一个 [ Xbar/SwiftBar 插件](https://kdeldycke.github.io/meta-package-manager/bar-plugin.html)以实现友好的 macOS 集成。 - 因为 `mpm` 试图封装所有其他的包管理器,它自身也变成了 [XKCD #927: 标准](https://xkcd.com/927/) 的另一个病态案例。 ## 支持的包管理器 一个 CLI 统治它们所有: ``` --- config: {"sankey": {"showValues": false, "width": 800, "height": 400}} --- sankey-beta Meta Package Manager,apk,1 Meta Package Manager,apm,1 Meta Package Manager,apt,1 Meta Package Manager,apt-mint,1 Meta Package Manager,asdf,1 Meta Package Manager,brew,1 Meta Package Manager,cargo,1 Meta Package Manager,cask,1 Meta Package Manager,choco,1 Meta Package Manager,composer,1 Meta Package Manager,conda,1 Meta Package Manager,cpan,1 Meta Package Manager,deb-get,1 Meta Package Manager,dnf,1 Meta Package Manager,dnf5,1 Meta Package Manager,emerge,1 Meta Package Manager,eopkg,1 Meta Package Manager,flatpak,1 Meta Package Manager,fwupd,1 Meta Package Manager,gem,1 Meta Package Manager,guix,1 Meta Package Manager,macports,1 Meta Package Manager,mas,1 Meta Package Manager,mise,1 Meta Package Manager,nix,1 Meta Package Manager,npm,1 Meta Package Manager,opkg,1 Meta Package Manager,pacaur,1 Meta Package Manager,pacman,1 Meta Package Manager,pacstall,1 Meta Package Manager,paru,1 Meta Package Manager,pip,1 Meta Package Manager,pipx,1 Meta Package Manager,pkg,1 Meta Package Manager,pnpm,1 Meta Package Manager,ports,1 Meta Package Manager,pwsh-gallery,1 Meta Package Manager,scoop,1 Meta Package Manager,sdkman,1 Meta Package Manager,sfsu,1 Meta Package Manager,snap,1 Meta Package Manager,steamcmd,1 Meta Package Manager,stew,1 Meta Package Manager,topgrade,1 Meta Package Manager,uv,1 Meta Package Manager,uvx,1 Meta Package Manager,vscode,1 Meta Package Manager,vscodium,1 Meta Package Manager,winget,1 Meta Package Manager,xbps,1 Meta Package Manager,yarn,1 Meta Package Manager,yarn-berry,1 Meta Package Manager,yay,1 Meta Package Manager,yum,1 Meta Package Manager,zerobrew,1 Meta Package Manager,zypper,1 ``` ## 元数据与操作 | 包管理器 | 版本 | 冷却期 | BSD[^bsd] | Linux[^linux] | macOS | Unix[^unix] | Windows | `installed` | `outdated` | `search` | `install` | `upgrade` | `upgrade_all` | `remove` | `sync` | `cleanup` | | :-------------------------------------------------------------------------------------- | :--------------- | :------: | :-------: | :-----------: | :---: | :---------: | :-----: | :---------: | :--------: | :------: | :-------: | :-------: | :-----------: | :------: | :----: | :-------: | | [`apk`](https://gitlab.alpinelinux.org/alpine/apk-tools) | >=2.10.0 | | | 🐧 | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`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 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`asdf`](https://asdf-vm.com) | >=0.16.0 | | | 🐧 | 🍎 | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | [`brew`](https://brew.sh) | >=6.0.0 | | | 🐧 | 🍎 | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`cargo`](https://doc.rust-lang.org/cargo/) | >=1.0.0 | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | | ✓ | ✓ | | | ✓ | | | | [`cask`](https://github.com/Homebrew/homebrew-cask) | >=6.0.0 | | | | 🍎 | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`choco`](https://chocolatey.org) | >=2.0.0 | | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | [`composer`](https://getcomposer.org) | >=1.4.0 | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | [`conda`](https://conda.org) | >=4.6.0 | | | 🐧 | 🍎 | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | [`cpan`](https://www.cpan.org) | >=1.64 | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | | | | | [`deb-get`](https://github.com/wimpysworld/deb-get) | | | | 🐧 | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`dnf`](https://github.com/rpm-software-management/dnf) | >=4.0.0 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`dnf5`](https://github.com/rpm-software-management/dnf5) | >=5.0.0 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`emerge`](https://wiki.gentoo.org/wiki/Portage#emerge) | >=3.0.0 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`eopkg`](https://github.com/getsolus/eopkg/) | >=3.2.0 | | | 🐧 | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`flatpak`](https://flatpak.org) | >=1.2.0 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | [`fwupd`](https://fwupd.org) | >=1.9.5 | | | 🐧 | | | | ✓ | ✓ | | ✓ | ✓ | ✓ | | ✓ | | | [`gem`](https://rubygems.org) | >=2.5.0 | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`guix`](https://guix.gnu.org) | | | | 🐧 | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`macports`](https://www.macports.org) | >=2.0.0 | | | | 🍎 | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`mas`](https://github.com/mas-cli/mas) | >=7.0.0 | | | | 🍎 | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | [`mise`](https://mise.jdx.dev) | >=2025.5.10 | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`nix`](https://nixos.org) | >=2.0.0 | | | 🐧 | 🍎 | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`npm`](https://www.npmjs.com) | >=11.10.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 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`pacstall`](https://pacstall.dev) | >=6.0.0 | | | 🐧 | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | [`paru`](https://github.com/Morganamilo/paru) | >=1.9.3 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`pip`](https://pip.pypa.io) | >=26.1.0 | ✓ | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | ✓ | | [`pipx`](https://pipx.pypa.io) | >=1.0.0 | ✓ | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | | | [`pkg`](https://github.com/freebsd/pkg) | >=1.11 | | | | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`pnpm`](https://pnpm.io) | >=11.0.0 | ✓ | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | [`ports`](https://www.freebsd.org/ports/) | | | | | | | | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`pwsh-gallery`](https://www.powershellgallery.com) | >=7.4.0 | | | 🐧 | 🍎 | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | [`scoop`](https://scoop.sh) | >=0.2.4 | | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`sdkman`](https://sdkman.io) | >=5.0.0 | | | 🐧 | 🍎 | | | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`sfsu`](https://github.com/winpax/sfsu) | >=1.16.0 | | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`snap`](https://snapcraft.io) | >=2.0.0 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | | [`steamcmd`](https://developer.valvesoftware.com/wiki/SteamCMD) | | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | | | | ✓ | | | | | | | [`stew`](https://github.com/marwanhawari/stew) | >=0.3.0 | | | 🐧 | 🍎 | | 🪟 | ✓ | | | ✓ | ✓ | ✓ | ✓ | | | | [`topgrade`](https://github.com/topgrade-rs/topgrade) | >=17.0.0 | | 🅱️ | 🐧 | 🍎 | | 🪟 | | | | | | ✓ | | | | | [`uv`](https://docs.astral.sh/uv) | >=0.5.0 | ✓ | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | ✓ | | [`uvx`](https://docs.astral.sh/uv/guides/tools/) | >=0.10.10 | ✓ | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | | | [`vscode`](https://code.visualstudio.com) | >=1.60.0 | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | | | ✓ | | | ✓ | | | | [`vscodium`](https://vscodium.com) | >=1.60.0 | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | | | ✓ | | | ✓ | | | | [`winget`](https://github.com/microsoft/winget-cli) | >=1.28.190 | | | | | | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | [`xbps`](https://github.com/void-linux/xbps) | >=0.59 | | | 🐧 | | | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`yarn`](https://yarnpkg.com) | >=1.20.0,\<2.0.0 | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | [`yarn-berry`](https://yarnpkg.com) | >=2.0.0 | | 🅱️ | 🐧 | 🍎 | ⨂ | 🪟 | | | ✓ | | | | | | ✓ | | [`yay`](https://github.com/Jguer/yay) | >=11.0.0 | ✓ | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`yum`](http://yum.baseurl.org) | >=4.0.0 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | [`zerobrew`](https://github.com/lucasgelfond/zerobrew) | >=0.3.0 | | | 🐧 | 🍎 | | | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | | | | [`zypper`](https://en.opensuse.org/Portal:Zypper) | >=1.14.0 | | 🅱️ | 🐧 | | ⨂ | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ## 安装 文档中提供了所有的[安装方法](https://kdeldycke.github.io/meta-package-manager/install.html)。以下是最常用的几种: ### macOS `mpm` 已包含在官方的 [Homebrew](https://brew.sh) 默认 tap 中,因此你可以通过以下命令安装它: ``` $ brew install meta-package-manager ``` ### Windows `mpm` 可在 [Scoop](https://scoop.sh) 的 `main` 仓库中找到,因此你只需: ``` > scoop install main/meta-package-manager ``` ### 可执行文件 `mpm` 最新版本的独立二进制文件支持多种平台和架构,可直接下载: | 平台 | `arm64` | `x86_64` | | ----------- | ------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | | **Linux** | [下载 `mpm-linux-arm64.bin`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-linux-arm64.bin) | [下载 `mpm-linux-x64.bin`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-linux-x64.bin) | | **macOS** | [下载 `mpm-macos-arm64.bin`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-macos-arm64.bin) | [下载 `mpm-macos-x64.bin`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-macos-x64.bin) | | **Windows** | [下载 `mpm-windows-arm64.exe`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-windows-arm64.exe) | [下载 `mpm-windows-x64.exe`](https://github.com/kdeldycke/meta-package-manager/releases/latest/download/mpm-windows-x64.exe) | 无需安装 Python 或 `uv`。适用于在最小镜像上运行的 CI/CD pipeline,或是难以管理依赖项的旧平台。 ## 快速入门 ### 列出已安装的包 列出当前系统上已安装的所有包: ``` $ 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). ``` 通过传递参数,将列表缩小至 ID 或名称与查询条件匹配的包。默认情况下,匹配是模糊的(不区分大小写并进行分词);添加 `--exact` 以要求包 ID 或名称完全匹配: ``` $ mpm installed sphinx $ mpm installed --exact Sphinx ``` ### 列出过时的包 列出所有有可用升级的已安装包: ``` $ 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). ``` 同样的查询参数会将列表限制为 ID 或名称匹配的过时包,同样默认使用模糊匹配,使用 `--exact` 进行精确匹配: ``` $ mpm outdated git ``` ### 列出管理器 如果你想知道为什么你的包管理器没有被识别,你可以通过以下命令列出 `mpm` 识别出的所有管理器: ``` $ mpm --all-managers managers ╭────────────┬────────────────────┬────────────────┬──────────────────────────────┬────────────┬───────────╮ │ Manager ID │ Name │ Supported │ CLI │ Executable │ Version │ ├────────────┼────────────────────┼────────────────┼──────────────────────────────┼────────────┼───────────┤ │ apm │ Atom apm │ ✓ │ ✘ apm not found │ │ │ │ apt │ Debian apt │ ✘ Linux only │ ✓ /usr/bin/apt │ ✓ │ ✘ │ │ apt-mint │ Linux Mint apt │ ✘ Linux only │ ✓ /usr/bin/apt │ ✓ │ ✘ │ │ brew │ Homebrew Formulae │ ✓ │ ✓ /opt/homebrew/bin/brew │ ✓ │ ✓ 3.6.3 │ │ cargo │ Rust 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 Composer │ ✓ │ ✓ /opt/homebrew/bin/composer │ ✓ │ ✓ 2.4.2 │ │ dnf │ Fedora DNF │ ✘ Linux only │ ✘ dnf not found │ │ │ │ emerge │ Gentoo emerge │ ✘ Linux only │ ✘ emerge not found │ │ │ │ flatpak │ Flatpak │ ✘ Linux only │ ✘ flatpak not found │ │ │ │ gem │ RubyGems │ ✓ │ ✓ /usr/bin/gem │ ✓ │ ✓ 3.0.3.1 │ │ mas │ Mac App Store │ ✓ │ ✓ /opt/homebrew/bin/mas │ ✓ │ ✓ 1.8.6 │ │ npm │ Node npm │ ✓ │ ✓ /opt/homebrew/bin/npm │ ✓ │ ✓ 8.19.2 │ │ opkg │ opkg │ ✘ Linux only │ ✘ opkg not found │ │ │ │ pacman │ Arch Linux pacman │ ✘ Linux only │ ✘ pacman not found │ │ │ │ pacstall │ Pacstall │ ✘ Linux only │ ✘ pacstall not found │ │ │ │ paru │ Arch Linux paru │ ✘ Linux only │ ✘ paru not found │ │ │ │ pip │ Python pip │ ✓ │ ✓ ~/.pyenv/shims/python3 │ ✓ │ ✓ 22.2.2 │ │ pipx │ Python pipx │ ✓ │ ✓ /opt/homebrew/bin/pipx │ ✓ │ ✓ 1.1.0 │ │ scoop │ Scoop │ ✘ Windows only │ ✘ scoop not found │ │ │ │ sdkman │ SDKMAN │ ✓ │ ✘ sdkman-init.sh not found │ │ │ │ snap │ Snap │ ✘ Linux only │ ✘ snap not found │ │ │ │ steamcmd │ Valve SteamCMD │ ✓ │ ✘ steamcmd not found │ │ │ │ vscode │ Visual Studio Code │ ✓ │ ✓ /opt/homebrew/bin/code │ ✓ │ ✓ 1.71.2 │ │ yarn │ Yarn Classic │ ✓ │ ✓ /opt/homebrew/bin/yarn │ ✓ │ ✓ 1.22.19 │ │ yarn-berry │ Yarn Berry │ ✓ │ ✓ /opt/homebrew/bin/yarn │ ✓ │ ✗ 1.22.19 │ │ yay │ Arch Linux yay │ ✘ Linux only │ ✘ yay not found │ │ │ │ yum │ Fedora YUM │ ✘ Linux only │ ✘ yum not found │ │ │ │ zypper │ openSUSE Zypper │ ✘ Linux only │ ✘ zypper not found │ │ │ ╰────────────┴────────────────────┴────────────────┴──────────────────────────────┴────────────┴───────────╯ ``` ## 使用案例 查看这些项目以获取 `mpm` 实际使用场景的真实示例: - ![GitHub stars](https://img.shields.io/github/stars/kdeldy/dotfiles?label=%E2%AD%90&style=flat-square) [Dotfiles](https://github.com/kdeldycke/dotfiles) - 面向 Python 开发者的 macOS dotfiles,使用 `mpm` 管理系统包。 ## 用法 其他子命令和选项的详细说明请见: - [详细的帮助界面](https://kdeldycke.github.io/meta-package-manager/cli-parameters.html) - [用例列表](https://kdeldycke.github.io/meta-package-manager/usecase.html),你将从中找到如何利用 `mpm` 强大功能的灵感 [^bsd]: BSD: DragonFly BSD、FreeBSD、MidnightBSD、NetBSD、OpenBSD、SunOS。 [^linux]: Linux: Alpine Linux、ALT Linux、Amazon Linux、Android、Arch Linux、Buildroot、CachyOS、CentOS、CloudLinux OS、Debian、Exherbo Linux、Fedora、Generic Linux、Gentoo Linux、Guix System、IBM PowerKVM、Kali Linux、KVM for IBM z Systems、Linux Mint、Mageia、Mandriva Linux、Manjaro Linux、NixOS、Nobara、openSUSE、openSUSE Tumbleweed、OpenWrt、Oracle Linux、Parallels、Pidora、Raspbian、RedHat Enterprise Linux、Rocky Linux、Scientific Linux、Slackware、SUSE Linux Enterprise Server、Tuxedo OS、Ubuntu、Ultramarine、Void Linux、Windows Subsystem for Linux v1、Windows Subsystem for Linux v2、XenServer。 [^unix]: Unix: Cygwin、GNU/Hurd、Haiku、IBM AIX、IBM i、illumos、Solaris。
标签:Python, SOC Prime, 包管理器, 命令行工具, 开发工具, 无后门, 系统运维, 统一API