18 个不稳定版本 (8 个破坏性更新)
0.21.0 | 2024年1月29日 |
---|---|
0.20.1 | 2023年11月27日 |
0.20.0 | 2023年10月31日 |
0.19.2 | 2023年7月27日 |
0.14.0 | 2021年9月26日 |
#315 in 命令行工具
每月 25 次下载
185KB
3.5K SLoC
pacaptr
pac·apt·r
,或称 PACman AdaPTeR,是许多包管理器的包装器,允许您使用 pacman 命令。
只需在非 Arch OS 上将 pacman
设置为 pacaptr
的别名,然后您可以在任何地方运行 pacman -Syu
!
> pacaptr -S neofetch
Pending `brew reinstall neofetch`
Proceed with the previous command? · Yes
Running `brew reinstall neofetch`
==> Downloading https://homebrew.bintray.com/bottles/neofetch-7.1.0
########################################################### 100.0%
==> Reinstalling neofetch
==> Pouring neofetch-7.1.0.big_sur.bottle.tar.gz
🍺 /usr/local/Cellar/neofetch/7.1.0: 6 files, 351.7KB
为什么使用 pacaptr
?
从 Arch Linux
迁移到 macOS
,我非常喜欢使用简短的 pacman
语法来简化常见的包管理任务的想法。
因此,我决定从现有的基于 sh
的 icy/pacapt 吸取灵感,使用 Rust 创建一个新的 CLI 工具,以实现更好的可移植性(特别是针对 Windows 和 macOS)和更易于维护。
支持的包管理器
pacaptr
当前支持以下包管理器(按优先级排序)
- Windows
- macOS
- Linux
apt
apk
dnf
emerge
xbps
zypper
- 外部:这些仅通过
pacaptr --using <name>
语法提供。
目前(不幸的是)优先级仍然是硬编码的。例如,如果同时安装了scoop
和choco
,则默认使用scoop
。然而,您可以编辑配置中的默认包管理器。
有关支持哪些操作的更多详细信息,请参阅兼容性表。
安装
注意 我们需要您的帮助以在更多平台上实现
pacaptr
的二进制分发!
Brew
brew install rami3l/tap/pacaptr
Scoop
scoop bucket add extras
scoop install pacaptr
Choco
choco install pacaptr
Cargo
如果您已安装cargo-binstall
,则通过cargo
安装pacaptr
的最快方式是运行
cargo binstall pacaptr
从crates.io构建和安装发布版本
cargo install pacaptr
从GitHub构建和安装master
版本
cargo install pacaptr --git https://github.com/rami3l/pacaptr.git
对于感兴趣的用户,还可以从本地仓库构建和安装
git clone https://github.com/rami3l/pacaptr.git && cd pacaptr
cargo install --path .
# The output path is usually `$HOME/.cargo/bin/pacaptr`.
卸载
cargo uninstall pacaptr
对于Alpine Linux
用户,cargo build
可能不起作用。请尝试以下方法
RUSTFLAGS="-C target-feature=-crt-static" cargo build
为Debian打包
cargo install cargo-deb
cargo deb
配置
配置文件路径按照以下优先级定义
$PACAPTR_CONFIG
,如果已设置;$XDG_CONFIG_HOME/pacaptr/pacaptr.toml
,如果$XDG_CONFIG_HOME
已设置;$HOME/.config/pacaptr/pacaptr.toml
.
我决定不未经用户允许就删除用户$HOME
,因此
-
如果用户尚未指定任何路径,我们将查找默认路径中的配置文件。
-
如果配置文件不存在,将使用
Default::default
加载默认配置,并且不会写入任何文件。 -
任何配置项都可以被相应的
PACAPTR_*
环境变量覆盖。例如,PACAPTR_NEEDED=false
在pacaptr.toml
中的优先级高于needed = true
。
示例
# This enforces the use of `install` instead of
# `reinstall` in `pacaptr -S`
needed = true
# Explicitly set the default package manager
default_pm = "choco"
# dry_run = false
# no_confirm = false
# no_cache = false
提示
通用
--using
,--pm
使用此标志可以显式指定要调用的底层包管理器。
# Here we force the use of `choco`,
# so the following output is platform-independent:
pacaptr --using choco -Su --dryrun
# Canceled: choco upgrade all
这在您正在运行Linux并且想使用linuxbrew
等时非常有用。在这种情况下,您可以--using brew
。
自动调用sudo
如果您不是root
并且希望执行需要sudo
的操作,pacaptr
会为您调用sudo -S
。
该功能目前支持以下包管理器:apk
、apt
、dnf
、emerge
、pkcon
、port
、xbps
和 zypper
。
额外标志支持
在 --
之后的所有标志将直接传递给底层包管理器
pacaptr -h
# USAGE:
# pacaptr [FLAGS] [KEYWORDS]... [-- <EXTRA_FLAGS>...]
pacaptr -S curl docker --dryrun -- --proxy=localhost:1234
# Canceled: foo install curl --proxy=localhost:1234
# Canceled: foo install docker --proxy=localhost:1234
这里 foo
是你的包管理器名称。(实际输出取决于平台,这很大程度上取决于 foo
是否能够读取给出的标志。)
--dryrun
、--dry-run
使用此标志仅打印要执行的命令(有时带有 --dry-run 标志以激活包管理器的 dryrun 选项)。
Pending
表示命令执行已被提示阻止;Canceled
表示在 dry run 中已取消;Running
表示它已经开始运行。
某些查询命令可能仍然会运行,但应该阻止任何“大型”操作运行,例如安装。例如
# Nothing will be installed,
# as `brew install curl` won't run:
pacaptr -S curl --dryrun
# Canceled: brew install curl
# Nothing will be deleted here,
# but `brew cleanup --dry-run` is actually running:
pacaptr -Sc --dryrun
# Running: brew cleanup --dry-run
# .. (showing the files to be removed)
# To remove the forementioned files,
# run the command above again without `--dryrun`:
pacaptr -Sc
# Running: brew cleanup
# .. (cleaning up)
--yes
、--noconfirm
、--no-confirm
使用此标志触发你的包管理器对应的标志(如果可能),以回答所有即将到来的问题“是”。
此选项在你不希望在安装期间被询问时很有用,例如,但它也可能很危险,如果你不知道自己在做什么!
--nocache
、--no-cache
使用此标志在安装包后删除缓存。
此选项在你想减少 Docker 镜像大小时很有用,例如。
平台特定提示
对于 brew
-
请注意,
cask
仅适用于macOS
。 -
当公式和 cask 有相同名称时,请小心,例如
docker
。pacaptr -Si docker | rg cask # => Warning: Treating docker as a formula. For the cask, use homebrew/cask/docker # Install the formula `docker` pacaptr -S docker # Install the cask `docker` pacaptr -S homebrew/cask/docker # Make homebrew treat all keywords as casks pacaptr -S docker -- --cask
对于 scoop
-
pacaptr
启动一个pwsh
子进程来运行scoop
,如果没有在$PATH
中找到pwsh
,则启动一个powershell
子进程。请确保你已经在相应的 shell 中设置了正确的执行策略。Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
对于 choco
- 不要忘记在提升的 shell 中运行!你可以使用如 gsudo 这样的工具轻松地做到这一点。
对于 pip
- 如果你要运行
pip3
命令,请使用pacaptr --using pip3
。
想要贡献吗?
听起来不错!请让我带你到 贡献指南 :)
依赖项
~14–27MB
~414K SLoC