GNU General Public License v3.0

项目介绍

rami3l/pacaptr 是一个托管在 GitHub 上的开源项目,主要使用 Rust 编写,采用 GNU General Public License v3.0 许可证,目前获得 425 个 Star、10 次 Fork。

仓库全名
rami3l/pacaptr
开源许可证
GNU General Public License v3.0
Star 数
425
Fork 数
10
未关闭 Issue
6

README 摘要

pacaptr pac·apt·r, or the PACman AdaPTeR, is a wrapper for many package managers that allows you to use pacman commands with them. Just set pacman as the alias of pacaptr on your non-Arch OS, and then you can run pacman -Syu wherever you like! Why pacaptr? Coming from Arch Linux to macOS, I really like the idea of having an automated version of [Pacman Rosetta] for making common package managing tasks less of a…

完整内容见 GitHub 原始 README 或本页 。

常见问题

pacaptr 用什么语言开发?

主要使用 Rust 编写,采用 GNU General Public License v3.0 许可证,目前有 425 个 Star。

pacaptr 可以免费商用吗?

仓库标注的许可证为 GNU General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 pacaptr 的源码?

可以直接克隆仓库:git clone https://github.com/rami3l/pacaptr.git,默认分支为 master;安装与运行步骤见仓库 README。

pacaptr 最近还在维护吗?

仓库最近一次更新为 5 天前,当前有 6 个未关闭 Issue;Star 数为 425,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Pacman-like syntax wrapper for many package managers.

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

Rust

Release

README

pacaptr

pacaptr

Crates.io docs.rs Private APIs License

pac·apt·r, or the PACman AdaPTeR, is a wrapper for many package managers that allows you to use pacman commands with them.

Just set pacman as the alias of pacaptr on your non-Arch OS, and then you can run pacman -Syu wherever you like!

> 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

Why pacaptr?

Coming from Arch Linux to macOS, I really like the idea of having an automated version of Pacman Rosetta for making common package managing tasks less of a travail thanks to the concise pacman syntax.

That’s why I decided to take inspiration from the existing sh-based icy/pacapt to make a new CLI tool in Rust for better portability (especially for Windows and macOS) and easier maintenance.

Supported Package Managers

pacaptr currently supports the following package managers (in order of precedence):

As for now, the precedence is still (unfortunately) hard-coded. For example, if both scoop and choco are installed, scoop will be the default. You can, however, edit the default package manager in your config.

Please refer to the compatibility table for more details on which operations are supported.

Installation

Note We need your help to achieve binary distribution of pacaptr on more platforms!

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

If you have installed cargo-binstall, the fastest way of installing pacaptr via cargo is by running:

cargo binstall pacaptr

To build and install the release version from crates.io:

cargo install pacaptr

To build and install the master version from GitHub:

cargo install pacaptr --git https://github.com/rami3l/pacaptr.git

For those who are interested, it is also possible to build and install from your local repo:

git clone https://github.com/rami3l/pacaptr.git && cd pacaptr
cargo install --path .
# The output path is usually `$HOME/.cargo/bin/pacaptr`.

To uninstall:

cargo uninstall pacaptr

For Alpine Linux users, cargo build might not work. Please try the following instead:

RUSTFLAGS="-C target-feature=-crt-static" cargo build

Packaging for Debian

cargo install cargo-deb
cargo deb

Configuration

The config file path is defined with the following precedence:

  • $PACAPTR_CONFIG, if it is set;
  • $XDG_CONFIG_HOME/pacaptr/pacaptr.toml, if $XDG_CONFIG_HOME is set;
  • $HOME/.config/pacaptr/pacaptr.toml.

I decided not to trash user’s $HOME without their permission, so:

  • If the user hasn’t yet specified any path to look at, we will look for the config file in the default path.

  • If the config file is not present anyway, a default one will be loaded with Default::default, and no files will be written.

  • Any config item can be overridden by the corresponding PACAPTR_* environment variable. For example, PACAPTR_NEEDED=false is prioritized over needed = true in pacaptr.toml.

Example
# 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

Tips

Universal

--using, --pm

Use this flag to explicitly specify the underlying package manager to be invoked.

# Here we force the use of `choco`,
# so the following output is platform-independent:
pacaptr --using choco -Su --dryrun
# Canceled: choco upgrade all

This can be useful when you are running Linux and you want to use linuxbrew, for example. In that case, you can --using brew.

Automatic sudo invocation

If you are not root and you wish to do something requiring sudo, pacaptr will do it for you by invoking sudo -S.

This feature is currently available for apk, apt, dnf, emerge, pkcon, port, xbps and zypper.

Extra flags support

The flags after a -- will be passed directly to the underlying package manager:

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

Here foo is the name of your package manager. (The actual output is platform-specific, which largely depends on if foo can actually read the flags given.)

--dryrun, --dry-run

Use this flag to just print out the command to be executed (sometimes with a --dry-run flag to activate the package manager’s dryrun option).

Pending means that the command execution has been blocked by a prompt; Canceled means it has been canceled in a dry run; Running means that it has started running.

Some query commands might still be run, but anything “big” should have been stopped from running, e.g. installation. For instance:

# 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

Use this flag to trigger the corresponding flag of your package manager (if possible) in order to answer “yes” to every incoming question.

This option is useful when you don’t want to be asked during installation, for example, but it can also be dangerous if you don’t know what you’re doing!

--nocache, --no-cache

Use this flag to remove cache after package installation.

This option is useful when you want to reduce Docker image size, for example.

Platform-Specific Tips

For brew
  • Please note that cask is for macOS only.

  • Be careful when a formula and a cask share the same name, e.g. 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
    
For scoop
  • pacaptr launches a pwsh subprocess to run scoop, or a powershell one if pwsh is not found in $PATH. Please make sure that you have set the right execution policy in the corresponding shell:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    
For choco
  • Don’t forget to run in an elevated shell! You can do this easily with tools like gsudo.
For pip
  • Use pacaptr --using pip3 if you want to run the pip3 command.

Feel Like Contributing?

Sounds nice! Please let me take you to the contributing guidelines :)

评论

暂无评论