/quack

Quack, the Qualitative and Usable Aur paCKage helper (Mirror)

Primary LanguageRubyDo What The F*ck You Want To Public LicenseWTFPL

README

Quack, the Qualitative and Usable Aur paCKage helper. Also, it sounds like a duck. Quack Quack.

Goal of the project

This is an auditable and readable (at least I tryied) AUR helper. It lets you easily verify that it does nothing wrong. Since it has to gain root privileges at some times, It is very important for me that you stay able to understand what it does.

This script aims to stay only a helper. Nothing more. Thus, it will never include a parser or complex solver. You are intended to play this role and stay in command.

Usage

See quack -h

Features

From the AUR Helper page on the Archlinux wiki, here are listed the different features an AUR Helper should implement and which we do:

Secure
does not source the PKGBUILD at all by default; or, alerts the user and offers the opportunity to inspect the PKGBUILD manually before it is sourced.
Clean build
does not export new variables that can prevent a successful build process.
Reliable parser
ability to handle complex packages by using the provided metadata (RPC/.SRCINFO) instead of PKGBUILD parsing, such as aws-cli-git.
Reliable solver
ability to correctly solve and build complex dependency chains, such as ros-lunar-desktop.
Split packages
ability to correctly build and install:
  • Multiple packages from the same package base, without rebuilding or reinstalling multiple times, such as clion;
  • Split packages which depend on a package from the same package base, such as libc++ and libc++abi;
  • Split packages independently, such as python-pyalsaaudio and python2-pyalsaaudio.
Git clone
uses git-clone(1) by default to retrieve build files from the AUR.
Native pacman
when used as replacement for pacman(8) commands such as pacman -Syu, the following are obeyed by default:
  • do not separate commands, for example pacman -Syu is not split to pacman -Sy and pacman -S packages;
  • use pacman directly instead of manual database manipulation or usage of libalpm(3).
Shell completion
tab completion is available for the listed shells.
FeatureSupportComment
SecureYES
Clean buildYESBy default Quack run in a docker container. It is also able to run inside a chroot with makechrootpkg.
Reliable parserYESWe use AUR RPC and package base name to determine the repo name, then we just call makepkg
Reliable solverPARTIALSee below
DependenciesPARTIALMost cases are supported. Complex ones depends on pacman itself, thus complex AUR cases are not supported.
Split packagesPARTIALAs we use makepkg all builds are currently done. However we offer a way to only install the package of your choice, respecting dependencies from the same package base if they exists.
Native pacmanYESQuack cannot be used as pacman replacement and there is no plan to support such a feature. Also, it directly calls pacman for package related operations.
Shell completionNO

Contributing

See ./CONTRIBUTING.org

     _         _
  __(.)>    __(.)<  Quack Quack
~~\___)~~~~~\___)~~~~~~~~~~~~~~~~~~