🎁 统一所有包管理器的CLI
项目描述
什么是元包管理器?
- 提供
mpm
CLI,它是所有包管理器的包装器 mpm
就像yt-dlp
,但用于包管理器而不是视频mpm
解决了XKCD #1654 - 通用安装脚本
功能
- 库存和列出系统上可用的所有包管理器。
- 支持macOS、Linux和Windows。
- 独立可执行文件适用于Linux、macOS和Windows。
- 列出已安装的软件包。
- 列出重复安装的软件包。
- 搜索软件包。
- 安装软件包。
- 删除软件包。
- 列出过时的软件包。
- 同步本地软件包信息。
- 升级所有过时的软件包。
- 将已安装软件包的列表备份到TOML文件。
- 从TOML文件恢复/安装软件包列表。
- 软件物料清单:将已安装的软件包导出到SPDX和CycloneDX SBOM文件。
- 将命令精确到包管理器的子集(包括/排除选择器)。
- 支持纯文本、版本化和purl软件包指定符。
- 将输出导出到JSON或打印用户友好的表格。
- 为Bash、Zsh和Fish提供shell自动完成。
- 提供Xbar/SwiftBar插件,以便于macOS集成。
- 因为
mpm
试图包装所有其他包管理器,所以它成为XKCD #927:标准的另一个病理案例
支持的包管理器和操作
包管理器 | 最小版本 | BSD[^bsd_without_macos] | Linux[^linux] | macOS | Unix[^unix] | Windows | 已安装 |
过时 |
搜索 |
安装 |
升级 |
升级所有 |
删除 |
同步 |
清理 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
apm ⚠️ |
1.0.0 | 🅱️ | 🐧 | 🍎 | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
apt |
1.0.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
apt-mint |
1.0.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
brew |
2.7.0 | 🐧 | 🍎 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
cargo |
1.0.0 | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ✓ | ✓ | ✓ | |||||
cask |
2.7.0 | 🍎 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
choco |
2.0.0 | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
composer |
1.4.0 | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
dnf |
4.0.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
emerge |
3.0.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
flatpak |
1.2.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
gem |
2.5.0 | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
mas |
1.6.1 | 🍎 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||||
npm |
4.0.0 | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
opkg |
0.2.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
pacaur |
4.0.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
pacman |
5.0.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
paru |
1.9.3 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
pip |
10.0.0 | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
pipx |
1.0.0 | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
pkg |
1.11 | 🅱️ | 🐧 | 🍎 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
scoop |
0.2.4 | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||
snap |
2.0.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
steamcmd |
None | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ||||||||
uv |
0.1.45 | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ✓ | ✓ | ✓ | |||||
vscode |
1.60.0 | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ✓ | |||||||
winget |
1.7 | 🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
yarn |
1.20.0 | 🅱️ | 🐧 | 🍎 | >_ |
🪟 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
yay |
11.0.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||
yum |
4.0.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||
zypper |
1.14.0 | 🅱️ | 🐧 | >_ |
✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
[^bsd_without_macos]: BSD:FreeBSD、NetBSD、OpenBSD、SunOS。
[^linux]: Linux:Linux、Windows子系统for Linux v2。
[^unix]: Unix:AIX、Cygwin、GNU/Hurd、Solaris、Windows子系统for Linux v1。
注意:缺少管理器
如果您的首选管理器缺失或不支持某种操作,您可以通过以下方式影响其实现:通过 提交一个工单记录其输出 或 阅读贡献指南 并提交一个pull request。
如果您 购买商业支持 🤝 或赞助项目 🫶,我可以为您完成这项工作。
安装
所有安装方法都在文档中提供。查看所有安装方法
以下是其中最受欢迎的几种:
macOS
mpm
是官方 Homebrew 默认 tap 的一部分,因此您可以使用以下命令进行安装:
$ brew install meta-package-manager
Windows
mpm
可在 Scoop 的 main
仓库中找到,因此您只需
> scoop install main/meta-package-manager
从源代码安装
pipx
是在任何平台上从源代码安装 mpm
的最干净的方法
$ pipx install meta-package-manager
可执行文件
最新版本的 mpm
的独立可执行文件作为直接下载提供,适用于多个平台和架构
平台 | x86_64 |
arm64 |
---|---|---|
Linux[^linux] | 下载 mpm-linux-x64.bin |
|
macOS | 下载 mpm-macos-x64.bin |
下载 mpm-macos-arm64.bin |
Windows | 下载 mpm-windows-x64.exe |
快速入门
列出已安装的包
列出当前系统上安装的所有包
$ 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).
列出过时的包
列出所有可升级的包
$ 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).
列出管理器
如果您想知道为什么您的包管理器似乎没有被识别,您可以使用以下命令列出 mpm
识别的所有管理器:
$ 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 │ │ │
╰────────────┴────────────────────┴────────────────┴──────────────────────────────┴────────────┴───────────╯
如果您的首选管理器尚未支持,您可以帮忙!请参阅 贡献指南。
用法
其他子命令和选项的文档在
[^bsd_without_macos]: BSD:FreeBSD、NetBSD、OpenBSD、SunOS。
[^linux]: Linux:Linux、Windows子系统for Linux v2。
[^unix]: Unix:AIX、Cygwin、GNU/Hurd、Solaris、Windows子系统for Linux v1。
项目详情
下载文件
下载适合您平台的项目文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
哈希值 for meta_package_manager-5.18.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 77e14f637da7f4c692b70c641de844560beeb1189734928ce3bb7cfd254a8282 |
|
MD5 | f9ff8cf64635bf9daeb0810f6497a40d |
|
BLAKE2b-256 | e78eaf308702fce8f551707f0e1a6b437df13fb25ff5568c0f45dcf5ea3a8eec |