Package: pikaur
pikaurAUR helper with minimal dependencies. Review PKGBUILDs all in once, next build them all without user interaction.Inspired bypacaur,yaourtandyay.Instead of trying to be smarter than pacman (by using--nodeps,--force,--ask,--noconfirmand so) it just interactively tells pacman what to do. If pacman asks some unexpected question, the user will be just able to answer it manually.Notable features:build local PKGBUILDs with AUR deps (-P/--pkgbuild)retrieve PKGBUILDs from AUR and ABS (-G/--getpkgbuild)interactively handle common build problems (like untrusted GPG key or checksum mismatch, wrong architecture)usingsystemd dynamic usersif building packages as root usershow unreadArch newsbefore sysupgrade[m]anual package selection ininstall promptusing text editor (ignore unwanted updates or select package provider)show AUR package diff and review PKGBUILD and .install filesupgrade-git,-svnand other dev packagesAUR package names in shell completion (bash, fish, zsh)quickly search&install package bypikaur <search-query>The following pacman operations are extended with AUR capabilities:-S(build AUR packages,--needed,--ignoreand--noconfirmare supported as in pacman, other args are just bypassed to it)-Sw(build AUR packages but don't install)-Ss(search or list all AUR packages,-qalso supported)-Si(package info)-Su/-Syu(sysupgrade)-Sc/-Scc(build dir/built packages cache clean)-Qu(query upgradeable,-qsupported)Also seepikaur -Sh,-Qh,-Phand-Ghfor pikaur-specific flags.Pikaur wraps all the pacman options accurately except for-Syuwhich is being split into-Sy(to refresh package list first) and-Su(to install upgrades after user confirmed the package list or altered it via [M]anual package selection).InstallationRun without installationFile locationsConfig fileFAQContributingCodeTranslationsDocumentationAuthorsInstallationsudopacman-S--neededbase-develgit
gitclonehttps://aur.archlinux.org/pikaur.gitcdpikaur
makepkg-fsriScreenshotRun without installationgitclonehttps://github.com/actionless/pikaur.gitcdpikaur
python3./pikaur.py-SAUR_PACKAGE_NAMEFile locations~/.cache/pikaur/
├──build/# build directory (removed after successful build)├──pkg/# built packages directory~/.config/pikaur.conf# config file~/.local/share/pikaur/
└──aur_repos/# keep aur repos there; show diff when updating└──last_installed.txt# aur repo hash of last successfully installed packageConfiguration~/.config/pikaur.conf[sync]DevelPkgsExpiration (default: -1)When doing sysupgrade, count all devel (-git, -svn, -bzr, -hg, -cvs) packages older than N days as being upgradeable.
-1 disables this.
0 means always upgrade.
Passing--develargument will override this option to 0.AlwaysShowPkgOrigin (default: no)When installing new packages, show their repository name, even if they are coming from one of the official Arch Linux repositories.UpgradeSorting (default: versiondiff)When upgrading packages, sort them byversiondiff,pkgnameorrepo.ShowDownloadSize (default: no)When installing repository packages, show their download size.IgnoreOutofdateAURUpgrades (default: no)When doing sysupgrade ignore AUR packages which haveoutofdatemark.[build]GpgDir (default: ) (root default: /etc/pacman.d/gnupg)Provides an override path for the GPG home directory used when validating aur package sources.
See explanations of--homedirand${GNUPGHOME}in the gpg man pages for more details.
Will be overridden by--build_gpgdirargument.KeepBuildDir (default: no)Don't remove~/.cache/pikaur/build/${PACKAGE_NAME}directory between the builds.
Will be overridden by-k/--keepbuildflag.KeepDevBuildDir (default: yes)When building dev packages (-git,-svn, etc),
don't remove~/.cache/pikaur/build/${PACKAGE_NAME}directory between the builds.Novalue will be overridden byKeepBuildDiroption and-k/--keepbuildflag.KeepBuildDeps (default: no)Don't remove build dependencies between and after the builds.
Will be overridden by--keepbuilddepsflag.SkipFailedBuild (default: no)Always skip the build if it fails and don't show recovery prompt.DynamicUsers (default: root) [root|never|always]When to isolate the build using systemd dynamic users.
(root- only when running as root)
Will be overridden by--dynamic-usersflag.IgnoreArch (default: no)Ignore specified architectures (arch-array) in PKGBUILDs.[review]DontEditByDefault (default: no)Always default to no when prompting to edit PKGBUILD and install files.NoEdit (default: no)Don't prompt to edit PKGBUILD and install files.
Will be overridden by--noeditand--editflags.NoDiff (default: no)Don't prompt to show the build files diff.
Will be overridden by--nodiffflag.GitDiffArgs (default: --ignore-space-change,--ignore-all-space)Flags to be passed togit diffcommand when reviewing build files.
Should be separated by commas (,).DiffPager (default: auto)Wherever to uselesspager when viewing AUR packages diff. Choices arealways,autoornever.HideDiffFiles (default: .SRCINFO)Hidegit difffor file paths, separated by commas (,).[colors]Terminal colors, from 0 to 15:Version (default: 10)VersionDiffOld (default: 11)VersionDiffNew (default: 9)[ui]RequireEnterConfirm (default: yes)Require enter key to be pressed when answering questions.PrintCommands (default: no)Print each command which pikaur is currently spawning.GroupByRepo (default: yes)Groups official packages by repository when using commands likepikaur -Ss <query>orpikaur <query>.AurSearchSorting (default: hottest)Sorting key for AUR packages when using commands likepikaur -Ss <query>orpikaur <query>. Acceptshottest,numvotes,lastmodified,popularity,pkgname. Onlypkgnameis sorted ascendingly. The metric forhottestis weighted by bothnumvotesandpopularity.DisplayLastUpdated (default: no)Display the date a package is last updated on search results when using commands likepikaur -Ss <query>orpikaur <query>.ReverseSearchSorting (default: no)Reverse search results of the commands likepikaur -Ss <query>orpikaur <query>.WarnAboutPackageUpdates (default: )Comma-separated list of packages names or globs, which upgrade should have additional warning message in the UI.[misc]PacmanPath (default: pacman)Path to pacman executable.PrivilegeEscalationTool (default: sudo)A tool used to escalate user privileges. Currently supported options aresudoanddoas.PrivilegeEscalationTarget (default: pikaur)Choices: pikaur, pacman.
In case of elevating privilege for pacman - pikaur would ask for password every time pacman runs.UserId (default: 0)User ID to run makepkg if pikaur started from root.
0 - means disabled, not that it will use uid=0.
Setting this option would override DynamicUsers settings and force changing to this UID instead of a dynamic one.[network]AurUrl (default:https://aur.archlinux.org)AUR Host.NewsUrl (default:https://www.archlinux.org/feeds/news/)Arch Linux News URL, useful for users of Parabola or other Arch derivatives.Socks5Proxy (default: )Specify a socks5 proxy which is used to get AUR package information.The format is[host[:port]], and the default port is 1080.
PySocks module (python-pysockspackage) should be installed in order to use this option.Note that any downloads bypacman,gitormakepkgwill NOT use this proxy.
If that's needed, setting proxy options in their own config files will take effect
(such as~/.gitconfig,~/.curlrc).AurHttpProxy (default: )Specify a HTTP proxy which is used to get AUR package information and togit-clone from AUR.Note that any downloads bypacman,git(inside the build) ormakepkgwill NOT use this proxy.
If that's needed, setting proxy options in their own config files will take effect
(such asenv HTTP_PROXY=,~/.gitconfig,~/.curlrc).AurHttpsProxy (default: )Specify a HTTPS proxy which is used to get AUR package information and togit-clone from AUR.Note that any downloads bypacman,git(inside the build) ormakepkgwill NOT use this proxy.
If that's needed, setting proxy options in their own config files will take effect
(such asenv HTTPS_PROXY=,~/.gitconfig,~/.curlrc).FAQHow to upgrade all the dev (-git) packages at once?pikaur -Sua --devel --needed(--neededoption will make sure what the same package version won't be rebuilt again and-a/--aurwill ensure what only AUR packages will be upgraded)How to manually remove unneeded dependencies?Pikaur is not needed for that, use just Pacman itself:sudo pacman -Rs $(pacman -Qtdq)(howeverpikaur -Rs ...would work as well if you lazy to typesudo:) )How to override default source directory, build directory or built package destination?SetSRCDEST,BUILDDIRorPKGDESTaccordingly inmakepkg.conf.For more info seemakepkgdocumentation.How to clean old or uninstalled AUR packages in ~/.cache/pikaur/pkg?Usepaccache(8)with the--cachediroption.To clean them up automatically, you may:use a pacman hook.  Start with the provided/usr/share/pikaur/examples/pikaur-cache.hook, remember to update the
cache's path.use a systemd service & timer (providedpikaur-cache.serviceandpikaur-cache.timer).  Configure it withsystemctl --user edit --full pikaur-cache.serviceand activate it withsystemctl --user enable --now pikaur-cache.timer.How to restore original PKGBUILD after editing?Go to the package's directory,cd ~/.local/share/pikaur/aur_repos/${PACKAGE_NAME}.
Review the current PKGBUILD file changes withgit diffand then reset withgit checkout -- '*'.How to see upgrade list without syncing the database? (like "checkupdates" tool from pacman)Actually usecheckupdatestool to check the repo updates and use pikaur only for AUR (-a/--aurswitch):checkupdates ; pikaur -Qua 2>/dev/nullPikaur slow when running it as root user (or via sudo)If you find the command takes a long time to initialize, make sure to periodically clear your cache:pikaur -Scc. Root pikaur is using SystemD Dynamic Users to isolate build process from the root, and it takes some time to change the owner of build cache to dynamic temporary user.How to migrate from Yay?This will migrate the cache of what AUR packages have been installed, so you can still see a Git diff for the next update of each package:mv~/.cache/yay/*~/.local/share/pikaur/aur_repos/
find~/.local/share/pikaur/aur_repos-mindepth1-maxdepth1-typed|xargs-r-I'{}'--sh-c'cd "{}" && git rev-parse HEAD > last_installed.txt'How to downgrade a package?This will show a list of commits to choose one to downgrade to.pikaur-G<package># retrieve package sourcescd<package>
gitlog# choose <commit> from the listgitcheckout<commit>
pikaur-Rns<package># Uninstal current versionpikaur-Pi# build and install older versioncd..&&rm-rf<package># Remove the temp directoryHow to add additional trusted keys when building with systemd dynamic users?When using systemd dynamic users, by default, there is not a persistent user or gpg home directory. You can set the path to a persistent gpg home directory using the cli argument--build_gpgdir. Alternatively, you can set a permanent default with the configuration option[build] gpgdirin the root pikaur configuration file/root/.config/pikaur.confThe below example configures makepkg to use a hypothetical gpg home directory at/etc/pikaur.d/gnupgwhen validating source files.[build]gpgdir=/etc/pikaur.d/gnupgYou can initialize a minimal gnupghome at the example path by executing the below commands as root.exportGNUPGHOME="/etc/pikaur.d/gnupg"mkdir-p"${GNUPGHOME}"gpg--batch--passphrase''--quick-gen-key"pikaur@localhost"rsasign0ContributingCodeYou can start fromthis list of issues. Grep-ing@TODOcomments also useful if you're itching to write something.Running CI locallyLinters (code quality check)./maintenance_scripts/lint.shTests./maintenance_scripts/docker_test.shSee also./maintenance_scripts/docker_test.sh --helpfor more options.TranslationsTo start working on a new language, sayhi_IN(Indian Hindi), add it to theMakefileLANGSvariable and runmake. Then translatelocale/hi_IN.pousing
your favorite PO editor. Runmakeevery time the Python code strings change
or the.pois modified.AuthorsTo see the list of authors, use this command inside pikaur git repository directory:gitlog--pretty=tformat:"%an <%ae>"|sort-uSpecial thanks@AladW (aurutils), @morganamilo (yay) during the early stages of Pikaur development.
Andall the other issue contributorsfor helping in triaging the bugs and clearing up feature requirements.