How to Install Pikaur on Arch Linux

Pikaur is a Python-based AUR helper that collects all user input upfront, then builds and installs packages without interruption. This “ask first, build later” design prevents scenarios where a multi-hour compilation pauses halfway through waiting for keyboard input you missed. By the end of this guide, you will have Pikaur installed and configured to manage packages from both official Arch repositories and the Arch User Repository (AUR) with minimal interaction during builds.

This guide covers installing Pikaur from source or tracking the development branch, plus an optional static build for recovery situations when Python breaks during system upgrades. You will also learn Pikaur’s essential commands, unique configuration options, and features like Arch news display before upgrades and manual package selection via text editor. If you need to configure sudo access on Arch Linux, complete that first since building AUR packages requires privilege escalation.

Install Prerequisites

AUR packages require compilation tools and version control software. The base-devel group provides compilers and make utilities, while git clones package repositories from the AUR.

Update System First

Synchronize the package database and upgrade existing packages:

sudo pacman -Syu

Running a full system upgrade ensures dependency versions align with repository expectations, preventing build failures from mismatched libraries.

Install Build Dependencies

Install the required packages for building AUR software:

sudo pacman -S --needed git base-devel

The --needed flag skips packages already installed at their current version, avoiding unnecessary reinstallation.

Select an Installation Method

Pikaur offers several AUR packages for different use cases. The core functionality remains identical; the difference lies in version tracking and dependency handling.

MethodChannelVersionBest For
pikaur (Recommended)AURLatest stableMost users; reliable, well-tested releases
pikaur-gitAURGit HEADTesting new features before release
pikaur-staticAURLatest stableRecovery tool when Python/pyalpm breaks

For most users, pikaur (stable release) is recommended. The stable package receives updates when the maintainer tags a new release, providing tested functionality. Use pikaur-git only if you want to test unreleased features or help debug issues.

Consider installing pikaur-static alongside regular pikaur as a backup. The static build uses Nuitka to compile Python into a standalone binary that works even when Python itself is broken. This takes longer to build but provides a recovery path if a system upgrade breaks your Python installation.

Option 1: Install Pikaur from Source (Recommended)

Building from source compiles Pikaur using Python build tools. The process installs necessary Python dependencies automatically and takes under a minute on most systems.

Clone the pikaur Repository

Navigate to your home directory and clone the AUR package:

cd ~
git clone https://aur.archlinux.org/pikaur.git
cd pikaur

Review the PKGBUILD

Examine the build script before proceeding. AUR packages are community-submitted without official review, so verifying what runs during installation is a recommended security practice:

cat PKGBUILD

The pikaur PKGBUILD downloads the source tarball from GitHub and builds using Python’s hatchling build system. Look for unexpected URLs, suspicious commands, or scripts that execute with elevated privileges.

Build and Install

Compile and install Pikaur:

makepkg -si

The -s flag resolves dependencies automatically (including pyalpm and Python build tools), and -i installs the package after building. Enter your sudo password when prompted.

Expected output:

==> Making package: pikaur 1.33.2-1 (Mon Jan 27 09:15:22 2026)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Installing missing dependencies...
:: Proceed with installation? [Y/n]
==> Retrieving sources...
  -> Downloading pikaur-1.33.2.tar.gz...
==> Validating source files with sha256sums...
    pikaur-1.33.2.tar.gz ... Passed
==> Extracting sources...
==> Starting build()...
==> Entering fakeroot environment...
==> Starting package()...
==> Finished making: pikaur 1.33.2-1

Clean Up Build Directory

Remove the cloned repository after successful installation:

The following command permanently deletes the cloned pikaur directory. Only run this after confirming installation succeeded with pikaur --version.

cd ~
rm -rf pikaur

Option 2: Install Pikaur Development Version

The pikaur-git package tracks the latest development commits, providing access to new features and bug fixes before official releases.

Clone the pikaur-git Repository

Navigate to your home directory and clone the development package:

cd ~
git clone https://aur.archlinux.org/pikaur-git.git
cd pikaur-git

Build and Install

makepkg -si

The build clones the entire Pikaur repository and builds from the latest commit. Updates via pikaur -Syu will rebuild whenever the upstream repository changes.

Clean Up

The following command permanently deletes the cloned pikaur-git directory. Only run this after confirming installation succeeded with pikaur --version.

cd ~
rm -rf pikaur-git

Development versions may contain unstable features or incomplete changes. Use pikaur-git only if you want to test upcoming features or help with debugging.

Option 3: Install Pikaur Static Build

The static build compiles Pikaur into a standalone binary with no Python runtime dependency. This takes significantly longer to build but provides a recovery tool when Python or pyalpm breaks during system upgrades.

Clone the pikaur-static Repository

cd ~
git clone https://aur.archlinux.org/pikaur-static.git
cd pikaur-static

Build and Install

makepkg -si

The build process uses Nuitka to compile Python code into native binaries. This requires ccache and takes 5-15 minutes depending on hardware. The resulting binary installs as pikaur-static and does not conflict with the regular pikaur package.

Clean Up

cd ~
rm -rf pikaur-static

You can also download pre-built static binaries from the Pikaur releases page on GitHub if you encounter build issues.

Verify Installation

Confirm Pikaur installed correctly:

pikaur --version

Pikaur displays version information in an ASCII art banner showing the pikaur version, pacman version, and pyalpm version. Look for the version number in the output (e.g., Pikaur v1.33.2).

Essential Pikaur Commands

Pikaur uses pacman-compatible syntax, so existing pacman commands work identically. The primary advantage is that Pikaur searches both official repositories and AUR simultaneously while prompting for all input before starting builds.

Interactive Package Search

Search and install packages interactively:

pikaur package-name

Running pikaur with only a search term displays matching packages from repositories and AUR with version numbers, descriptions, votes, and popularity scores. Enter a number to install the corresponding package.

For a non-interactive search:

pikaur -Ss package-name

Install Packages

Install a package by name:

pikaur -S package-name

Pikaur determines whether the package exists in official repositories or AUR and handles installation accordingly. For AUR packages, Pikaur clones the PKGBUILD, shows a diff for review, resolves dependencies (including other AUR packages), prompts for all required input, then builds and installs without further interruption.

System Upgrade

Upgrade all packages including AUR:

pikaur -Syu

This synchronizes the package database, upgrades official packages, checks for AUR updates, and rebuilds outdated AUR packages. Pikaur displays any unread Arch Linux news items before proceeding with upgrades.

Upgrade AUR Packages Only

Update only AUR packages without touching official repository packages:

pikaur -Sua

Check for AUR Updates

List available AUR updates without installing them:

pikaur -Qua

View Package Information

Display details about any package:

pikaur -Si package-name

For AUR packages, the output includes maintainer, votes, popularity score, out-of-date status, dependencies, and last modification date.

Remove Packages

Uninstall a package along with orphaned dependencies:

pikaur -Rns package-name

The flags perform removal (-R), delete configuration files (-n), and remove dependencies no longer required by other packages (-s).

Pikaur-Specific Features

Pikaur provides several unique capabilities not found in all AUR helpers. Its batch question mode collects all user input before starting builds, so multi-package installations complete without interruption. Pikaur also handles common problems automatically, prompting for untrusted GPG keys, checksum mismatches, and architecture conflicts as they arise.

Arch News Display

Before system upgrades, Pikaur checks for unread Arch Linux news and displays relevant items that might require manual intervention. This prevents surprises from package changes that need user action before or after upgrading.

Manual Package Selection

During upgrades, Pikaur prompts you to review packages. Press M at the confirmation prompt to open your text editor with the package list. Remove lines to skip specific upgrades, then save and close to proceed with the modified selection.

Download PKGBUILDs Without Installing

Fetch the PKGBUILD and related files for any package:

pikaur -G package-name

This clones the AUR package repository to the current directory. Useful when you want to inspect, modify, or manually build a package.

Build a Local PKGBUILD

Build and install a package from a PKGBUILD in the current directory:

pikaur -P

Use pikaur -Pi to build and install in one step. This handles AUR dependencies automatically, unlike running makepkg directly.

Upgrade Development Packages

Force update all development packages (-git, -svn, -hg, etc.) regardless of version numbers:

pikaur -Sua --devel --needed

The --devel flag checks development packages for upstream changes, and --needed skips packages where the local version matches upstream.

Manage Package Caches

Pikaur maintains cache and data directories separate from pacman. Regular cleanup prevents disk space accumulation.

Cache Locations

Pikaur stores files in several locations:

  • ~/.cache/pikaur/build/ – Build directory (removed after successful builds)
  • ~/.cache/pikaur/pkg/ – Built package archives
  • ~/.local/share/pikaur/aur_repos/ – Cloned AUR repositories for tracking diffs
  • ~/.config/pikaur.conf – Configuration file

Remove Orphaned Packages

Remove packages installed as dependencies that are no longer needed:

pikaur -Rs $(pacman -Qtdq)

Clear All Caches

Remove cached package files and build directories:

pikaur -Scc

This clears both the pacman package cache in /var/cache/pacman/pkg/ and Pikaur’s AUR cache. Confirm when prompted.

Automated Cache Cleanup

Install pacman-contrib for the paccache tool, then use it with Pikaur’s cache:

sudo pacman -S pacman-contrib
paccache -rk2 -c ~/.cache/pikaur/pkg

This keeps only the two most recent versions of each package in Pikaur’s cache. Pikaur includes example systemd timer and hook files in /usr/share/pikaur/examples/ for automated cleanup.

Configure Pikaur Behavior

Pikaur reads settings from ~/.config/pikaur.conf in INI format. The configuration file is created automatically on first run with default values. Open it in your preferred text editor to customize behavior:

nano ~/.config/pikaur.conf

Skip PKGBUILD Diff Prompts

Disable the diff review prompt that appears before building:

[review]
nodiff = yes

Skipping PKGBUILD review reduces security. Only disable this if you understand the risks and trust the packages you install.

Auto-Update Development Packages

Set development packages (-git, -svn, etc.) to automatically check for updates after a certain number of days:

[sync]
develpkgsexpiration = 7

Set to 0 to always check development packages, or -1 to never check automatically.

Keep Build Directories

Preserve build directories between builds for faster rebuilds:

[build]
keepbuilddir = yes

Development packages keep their build directories by default (keepdevbuilddir = yes) since they frequently pull from version control.

Change Search Result Sorting

Configure how AUR search results are sorted:

[ui]
aursearchsorting = hottest

Options include hottest (default, weighted by votes and popularity), numvotes, lastmodified, popularity, or pkgname.

Use Alternative Privilege Escalation

Switch from sudo to doas or another tool:

[misc]
privilegeescalationtool = doas

Update Pikaur

Pikaur updates through the normal upgrade process like any AUR package:

pikaur -Syu

When a new version becomes available, Pikaur appears in the upgrade list and handles rebuilding itself during the upgrade.

Migrate from Yay

If you previously used yay and want to preserve your AUR package tracking (for diff display on updates), migrate the cache:

mv ~/.cache/yay/* ~/.local/share/pikaur/aur_repos/
find ~/.local/share/pikaur/aur_repos -mindepth 1 -maxdepth 1 -type d | xargs -r -I '{}' -- sh -c 'cd "{}" && git rev-parse HEAD > last_installed.txt'

This moves yay’s cloned repositories and creates tracking files so Pikaur shows meaningful diffs on future updates.

Remove Pikaur

If you no longer need Pikaur, remove it with pacman.

Uninstall the Package

Remove Pikaur and orphaned dependencies:

sudo pacman -Rns pikaur

If you installed pikaur-git instead:

sudo pacman -Rns pikaur-git

Delete Configuration and Cache

Remove Pikaur’s configuration and data directories:

This permanently deletes your Pikaur configuration settings, cached packages, and AUR repository tracking. Skip this step if you plan to reinstall Pikaur later and want to preserve your settings.

rm -rf ~/.config/pikaur.conf ~/.cache/pikaur ~/.local/share/pikaur

Verify Removal

Confirm Pikaur is no longer present:

pacman -Qi pikaur

Expected output:

error: package 'pikaur' was not found

Removing Pikaur does not affect AUR packages installed through it. Those packages remain on your system and can be managed with pacman or another AUR helper.

Troubleshooting

Cannot Build as Root

If makepkg reports “Running makepkg as root is not allowed,” you are attempting to build as the root user. AUR packages must be built as a regular user for security.

Create a non-root user and switch to it:

useradd -m username
passwd username
usermod -aG wheel username
su - username

PGP Signature Verification Failed

Some AUR packages cryptographically sign their source archives. If the build fails with “FAILED (unknown public key)”, import the required key:

gpg --recv-keys KEY_ID

Replace KEY_ID with the fingerprint shown in the error. If the default keyserver fails, try an alternative:

gpg --keyserver keyserver.ubuntu.com --recv-keys KEY_ID

Pikaur can also handle some key imports interactively during the build process if the PKGBUILD specifies the required keys.

Build Failures

Package builds can fail due to missing dependencies, outdated PKGBUILDs, or upstream changes. First verify your system is fully updated:

pikaur -Syu

Check AUR comments for the package on the AUR website to see if others report similar issues. Package maintainers often post fixes in the comments.

Python or Pyalpm Breaks During Upgrade

If a system upgrade breaks Python or pyalpm, Pikaur cannot run. This is where pikaur-static becomes essential. Install it before encountering problems:

pikaur -S pikaur-static

If you are already in a broken state, download the static binary from the releases page on another device, transfer it, and run it to reinstall Python:

chmod +x pikaur-static
./pikaur-static -S python pyalpm

Package Conflicts

When installing a package that conflicts with an existing one, Pikaur prompts for removal confirmation. If you accidentally decline, remove the conflict manually:

sudo pacman -Rns conflicting-package
pikaur -S desired-package

Debug Output

For detailed troubleshooting information, run Pikaur with debug mode:

pikaur --pikaur-debug -S package-name

When reporting issues on the GitHub issue tracker, include the full debug output.

Common Questions

What is the difference between pikaur, pikaur-git, and pikaur-static?

pikaur is the stable release for regular use. pikaur-git tracks the latest development commits for testing new features. pikaur-static compiles to a standalone binary with no Python dependency, serving as a recovery tool when Python breaks.

How does Pikaur compare to yay and paru?

Pikaur is written in Python and focuses on asking all questions upfront before starting builds. Yay is written in Go and paru in Rust. Pikaur’s unique features include Arch news display, editor-based package selection, and a static binary for recovery situations.

Why should I install pikaur-static?

Unlike yay or paru which have minimal dependencies, Pikaur requires Python and pyalpm. If these break during an update, Pikaur cannot run. The static build has no runtime dependencies and can fix such situations.

Can Pikaur manage Flatpak or Snap packages?

No. Pikaur is designed strictly for Arch Linux repositories and the AUR. Use the flatpak or snap CLI tools for those package formats.

How do I see Arch Linux news before upgrades?

Pikaur automatically displays unread Arch Linux news items before performing system upgrades with pikaur -Syu. No configuration is required.

How do I manually select which packages to upgrade?

During the upgrade confirmation prompt, press M to open your text editor with the package list. Remove lines for packages you want to skip, save, and close the editor to proceed with the modified selection.

Additional Resources

For more information about Pikaur and AUR package management:

Pikaur includes help flags for different operation types:

pikaur -Sh  # Sync operations help
pikaur -Qh  # Query operations help
pikaur -Ph  # PKGBUILD operations help
pikaur -Gh  # GetPKGBUILD operations help

Conclusion

Pikaur provides a Python-based approach to AUR package management that prioritizes uninterrupted builds by collecting all user input before starting compilations. The essential commands are pikaur -S package to install, pikaur -Syu to upgrade everything, pikaur -Rns package to remove, and pikaur -Ss term to search. Take advantage of the automatic Arch news display during upgrades and the manual package selection feature when you need fine-grained control over updates. Consider installing pikaur-static as a backup tool to ensure you can recover from Python-related breakages during system upgrades.

Leave a Comment

Let us know you are human: