#包管理器 #pacman #包管理 #命令 #包装器 #语法 #运行

bin+lib pacaptr

适用于许多包管理器的类似 pacman 的语法包装器

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 次下载

GPL-3.0 许可证

185KB
3.5K SLoC

pacaptr

pacaptr

Crates.io docs.rs Private APIs License

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 语法来简化常见的包管理任务的想法。

因此,我决定从现有的基于 shicy/pacapt 吸取灵感,使用 Rust 创建一个新的 CLI 工具,以实现更好的可移植性(特别是针对 Windows 和 macOS)和更易于维护。

支持的包管理器

pacaptr 当前支持以下包管理器(按优先级排序)

目前(不幸的是)优先级仍然是硬编码的。例如,如果同时安装了scoopchoco,则默认使用scoop。然而,您可以编辑配置中的默认包管理器。

有关支持哪些操作的更多详细信息,请参阅兼容性表

安装

注意 我们需要您的帮助以在更多平台上实现pacaptr的二进制分发!

Brew

Tap Updated

brew install rami3l/tap/pacaptr

Scoop

Scoop Version

scoop bucket add extras
scoop install pacaptr

Choco

Chocolatey Version Chocolatey Downloads

choco install pacaptr

Cargo

Cargo Version Cargo Downloads

如果您已安装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=falsepacaptr.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

该功能目前支持以下包管理器:apkaptdnfemergepkconportxbpszypper

额外标志支持

-- 之后的所有标志将直接传递给底层包管理器

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