PARU(8)

NAME
paru - AUR helper and pacman wrapper

SYNOPSIS
paru <operation> [options] [targets]

paru <search terms>

paru

DESCRIPTION
Paru is an AUR helper written in Rust and based on the design of yay. It aims to be your standard pacman wrapping AUR helper with minimal interaction. Paru is a tool to easily build and install packages from the AUR, along with their dependencies. Paru also expands many of pacman's options making them AUR aware. This manpage only covers options unique to paru. For other options see pacman(8).

PARU OPERATIONS

-P, --show
    Printing related options.

-G, --getpkgbuild
    Downloads PKGBUILDs from the ABS or AUR. The ABS can only be used for Arch Linux repositories.

-B, --build
    Build PKGBUILDs on disk. Targets are directories directly containing a PKGBUILD.

-L, --repoctl
    List local repos.

-C, --chrootctl
    Interactive shell to the chroot.
If no arguments are provided 'paru -Syu' will be performed.

EXTENDED PACMAN OPERATIONS

-R, -S, -Si, -Sl, -Ss, -Su, -Sc, -Qu -T
    These operations are extended to support both AUR and repo packages.

-R  Paru will also remove cached data about devel packages.

-Sc Paru will also clean cached AUR packages and any untracked files in the cache. Cleaning untracked files will wipe any downloaded sources or built packages but will keep already downloaded VCS sources. -d or --delete can be passed to delete the entire package instead of just cleaning it.

-Ss The AUR can be searched using regex but it must be explicitly requested using -x/--regex. Regex search will only search package names and not descriptions regardless of SearchBy.

-Sss
    Paru will also output a verbose search result when passing two

-S, -Si, -Sl, -Ss, -Su, -Qu
    Paru will also handle AUR packages for these operations.

-Ta Will filter a list of packages to ones that appear in the AUR.

NO OPERATION

<NO OPTION>
    Interactive search and install. Displays a list of packages matching the search terms and prompts the user on which packages to install.

--gendb
    Generate the development package database. This tracks the latest commit for each development package, so when there is a new commit paru will know to update. This is done per package whenever a package is synced. This option should only be used when migrating to paru from another AUR helper. This also causes paru to assume all current development packages are up to date. Updates will then be detected on the next commit.

-c, --clean
    Remove unneeded dependencies. Make and check dependencies are considered for foreign packages. Pass this twice to ignore these. Pass -o to ignore optional dependencies.

SHOW OPTIONS (APPLY TO -P AND --SHOW)

-c, --complete
    Print a list of all AUR and repo packages. This allows shell completion and is not intended to be used directly by the user.

-s, --stats
    Displays information about installed packages and system health. If there are orphaned, or out-of-date packages, or packages that no longer exist on the AUR; warnings will be displayed.

-w, --news
    Print new news from the Arch Linux homepage. News is considered new if it is newer than the build date of all native packages. Pass this twice to show all available news.

-o, --order
    Print buildorder for targets. This option outputs information about how to build a package and its dependencies. Each line of output specifies an action to perform or information to take into consideration. Each line of output will be in one of the following formats:
    MISSING <DEP> [WANTED BY]...
        A dependency could not be found. <DEP> is the dependency that could not be found and [WANTED BY] is the current dependency stack. The dependency stack will be empty if the package that could not be found was a target. Paru will exit 1 if any packages are missing.
    CONFLICT LOCAL|INNER <PKG> <CONFLICTING PKG> [CONFLICT]
        There was a package conflict. The second arg will be LOCAL if the conflict is with an installed package and INNER if two of the to be installed packages conflict. <PKG> and <CONFLICTING PKG> are the packages in conflict and [CONFLICT] will be the conflict string if it is different from <CONFLICTING PKG>.
    INSTALL TARGET|DEP|MAKE <DB> <NAME>
        Install a package from the pacman repos. The first arg will be TARGET if the package is a target, DEP if a dependency, or MAKE if the package is a build time dependency. <DB> is the name of the database the package belongs to and <NAME> is the name of the package.
    AUR TARGET|DEP|MAKE <BASE> <NAMES>...
        Build a package from the AUR. The first arg will be TARGET if the package is a target, DEP if a dependency, or MAKE if the package is a build time dependency. <BASE> is the pkgbase of the package and <NAMES> are the names of the packages belonging to the pkgbase.
    More options may be added in the future.

GETPKGBUILD OPTIONS (APPLY TO -G AND --GETPKGBUILD)

-p, --print
    Prints the PKGBUILD to the terminal instead of downloading it.

-c, --comments
    Print the AUR comments from the PKGBUILD's AUR page. Pass twice to get all comments instead of the first page.

-s, --ssh
    Clone the AUR package using SSH (e.g.: a read-write remote).

REPOCTL OPTIONS (APPLY TO -L AND --REPOCTL)

-l, --list
    List packages in local repos

-c, --clean
    Remove packages that are not currently installed from repos.

-d, --delete
    Remove a package from the local repo. Pass this twice to also uninstall the package.

-y, --refresh
    Refresh local repos.

-q, --quiet
    Show less information.

CHROOTCTL OPTIONS (APPLY TO -C AND --CHROOTCTL)

-i, --install
    Install a package into the chroot. --noconfirm can also be specified and will be forwarded to pacman.

-u, --sysupgrade
    Upgrade the chroot.

-p, --print
    Print path to currently configured chroot.

BUILD OPTIONS (APPLY TO -B AND --BUILD)

-i, --install
    Also install the package once built.

NEW OPTIONS

--repo
    Assume all targets are from the repositories. Additionally, actions such as sysupgrade will only act on repository packages.

-a, --aur
    Assume all targets are from the AUR. Additionally, actions such as sysupgrade will only act on AUR packages. Note that dependency resolution will still include repository packages.

--pkgbuilds
    Assume all targets are from the PKGBUILD repositories. Additionally, actions such as sysupgrade will only act on AUR packages. Note that dependency resolution will still include repositoryi and AUR packages.

--mode = aur|repo|pkgbuilds
    Select what kinds of packages paru should act on. Multiple modes can be selected by separating them with a comma. Additionally, a, r and p may be used as short hand for aur, repo and pkgbuilds respectively. Short form modes can also be combined without a comma. E.g. --mode=ar or --mode=arp.

--interactive
    Enable interactive package selection for -S, -R, -Ss and -Qs. For -S/-R this allows you to pick which packages to install/remove from a list. paru <foo> is an alias to paru -S --interactive <foo>. For -Ss/-Qs this allows you to interactively pick packages from the sync/local repos respectively. This is intended to be chained with other package tools so paru can handle the menu work while the other tool in the pipeline just gets the packages. For example: paru -Ssaq --interactive ruby | paru -Gc - will show AUR packages containing the term ruby, give the user an interactive menu to pick packages, then pipeline those packages into -Gc and display the comments. Would allow a user to interactively choose what files to list.

--aururl
    Set an alternative AUR URL.

--aurrpcurl
    Set an alternative URL for the AUR /rpc endpoint.

--clonedir <dir>
    Directory used to download and run PKGBUILDs.

--makepkg <command>
    The command to use for makepkg calls. This can be a command in PATH or an absolute path to the file.

--makepkgconf <file>
    Specifies a makepkg.conf file to use in the chroot environment. The file can only be an absolute path to the file.

--pacman <command>
    The command to use for pacman calls. This can be a command in PATH or an absolute path to the file.

--pacman-conf <command>
    The command to use for pacman-conf calls. This can be a command in PATH or an absolute path to the file.

--git <command>
    The command to use for git calls. This can be a command in PATH or an absolute path to the file.

--gitflags <flags>
    Passes arguments to git. These flags get passed to every instance where git is called by paru. Arguments are split on whitespace before being passed to git. Multiple arguments may be passed by supplying a space separated list that is quoted by the shell.

--gpg <command>
    The command to use for gpg calls. This can be a command in PATH or an absolute path to the file.

--gpgflags <flags>
    Passes arguments to gpg. These flags get passed to every instance where gpg is called by paru. Arguments are split on whitespace before being passed to gpg. Multiple arguments may be passed by supplying a space separated list that is quoted by the shell.

--fm <command>
    This enables fm review mode, where PKGBUILD review is done using the file manager specified by command. This allows the PKGBUILDs and related files to be edited. Changes won't persist unless committed.

--fmflags <flags>
    Passes arguments to file manager. These flags get passed to every instance where file manager is called by paru. Arguments are split on whitespace before being passed to the file manager. Multiple arguments may be passed by supplying a space separated list that is quoted by the shell.

--asp <command>
    The command to use for asp calls. This can be a command in PATH or an absolute path to the file.

--mflags <flags>
    Passes arguments to makepkg. These flags get passed to every instance where makepkg is called by paru. Arguments are split on whitespace before being passed to makepkg. Multiple arguments may be passed by supplying a space separated list that is quoted by the shell.

--bat <command>
    The command to use for bat calls. This can be a command in PATH or an absolute path to the file.

--batflags <flags>
    Passes arguments to bat. These flags get passed to every instance where bat is called by paru. Arguments are split on whitespace before being passed to bat. Multiple arguments may be passed by supplying a space separated list that is quoted by the shell.

--sudo <command>
    The command to use for sudo calls. This can be a command in PATH or an absolute path to the file. The --sudoloop option is not guaranteed to work with a custom sudo command.

--sudoflags <flags>
    Passes arguments to sudo. These flags get passed to every instance where sudo is called by paru. Arguments are split on whitespace before being passed to sudo. Multiple arguments may be passed by supplying a space separated list that is quoted by the shell.

--chrootflags <flags>
    Passes arguments to makechrootpkg. These flags get passed to every instance where makechrootpkg is called by paru. Arguments are split on whitespace before being passed to makechrootpkg. Multiple arguments may be passed by supplying a space separated list that is quoted by the shell.

--chrootpkgs <package>
    Installs package into the chroot before building. Multiple packages can be specified by separating them with a comma. Useful when PKGBUILDs don't declare needed dependencies. Note that this is only a temp fix and only applies to this one build. You should ideally patch the package yourself or report the problem to the maintainer. If you want to permanently add a package to the chroot use paru -Ci package to install packages into the master chroot.

--completioninterval <days>
    Time in days to refresh the completion cache. Setting this to 0 will cause the cache to be refreshed every time, while setting this to -1 will cause the cache to never be refreshed. Defaults to 7.

--sortby <votes|popularity|id|baseid|name|base|submitted|modified>
    Sort AUR results by a specific field during search. Defaults to votes.

--searchby <name|name-desc|maintainer|depends|checkdepends|makedepends|optdepends>
    Search for AUR packages by querying the specified field. Defaults to name-desc.

--skipreview
    Skip the review process.

--review
    Don't skip the review process.

--upgrademenu
    Show a detailed list of updates in a similar format to pacman's VerbosePkgLists option. (See pacman.conf(5)). Upgrades can be skipped using numbers, number ranges, or repo names. Warning: It is not recommended to skip updates from the repositories as this can lead to partial upgrades. This feature is intended to easily skip AUR updates on the fly that may be broken or have a long compile time. Ultimately it is up to the user what upgrades they skip.

--noupgrademenu
    Do not show the upgrade menu.

--removemake [yes|no|ask]
    Remove makedepends after installing packages. If set to ask, a menu will appear during builds allowing an option to be chosen then. Defaults to yes when specified without an option.

--noremovemake
    Don't remove makedepends after installing packages.

--topdown
    Print search results from top to bottom. Repo packages will print first. This is the default.

--bottomup
    Print search results from bottom to top. AUR packages will print first.

--limit <limit>
    Limit the number of packages returned in a search to the given amount. Defaults to 0 (no limit). This applies separately to repo and AUR packages.

-x, --regex
    Enable regex for aur search. The regex will only be matched against pkgnames and not pkgdescs as you would usually expect.

--nocheck
    Don't resolve checkdepends or run the check function.

--installdebug
    Also install debug packages when a package provides them.

--noinstalldebug
    Don't install debug packages when a package provides them.

--devel
    During sysupgrade also check AUR development packages for updates. Currently only Git packages are supported. Devel checking is done using git ls-remote. The newest commit hash is compared against the hash at install time. This allows devel updates to be checked almost instantly and not require the original PKGBUILD to be downloaded. The slower pacaur-like devel checks can be implemented manually by piping a list of packages into paru (see examples).

--ignoredevel
    Like --ignore but for devel upgrades. Packages matching this will not be tried for a devel update but may still be upgraded if the pkgver changes.

--nodevel
    Do not check for development packages updates during sysupgrade.

--develsuffixes
    Suffixes that paru will use to decide if a package is a devel package. Used when determining if a pkgver bump is used when the --needed option is set.

--cleanafter
    Remove untracked files after installation. Untracked files are removed with the exception of directories. This allows VCS packages to easily pull an update instead of having to reclone the entire repo.

--nocleanafter
    Do not remove package sources after successful install.

--redownload [yes|no|all]
    Always download PKGBUILDs of targets even when a copy is available in cache. If all is specified, then PKGBUILDs will be downloaded for all packages, not just targets. Defaults to yes when specified.

--noredownload
    When downloading PKGBUILDs, if the PKGBUILD is found in cache and is equal or newer than the AUR's version use that instead of downloading a new one.

--provides
    Look for matching providers when searching for AUR packages. When multiple providers are found a menu will appear prompting you to pick one. This increases dependency resolve time although this should not be noticeable. By default only targets and missing packages will be searched for providers. Specifying all will enable this for all packages.

--noprovides
    Do not look for matching providers when searching for AUR packages. Paru will never show its provider menu but pacman will still show its provider menu for repo packages.

--pgpfetch
    Prompt to import unknown PGP keys from the validpgpkeys field of each PKGBUILD.

--nopgpfetch
    Do not prompt to import unknown PGP keys. This is likely to cause a build failure unless using options such as --skippgpcheck or a customized gpg config.

--newsonupgrade
    Print new news during sysupgrade.

--useask
    Use pacman's --ask flag to automatically confirm package conflicts. Paru lists conflicts ahead of time. It is possible that paru does not detect a conflict, causing a package to be removed without the user's confirmation. However, this is very unlikely.

--nouseask
    Manually resolve package conflicts during the install. Packages which do not conflict will not need to be confined manually.

--savechanges
    Commit changes to pkgbuilds made during review.

--nosavechanges
    Don't commit changes to pkgbuilds made during review.

--failfast
    Exit as soon as any AUR packages fail to build. By default Paru will continue and try to build other AUR packages.

--nofailfast
    Don't exit as soon as any AUR packages fail to build.

--keepsrc
    Keep src/ and pkg/ directories after building packages.

--nokeepsrc
    Don't keep src/ and pkg/ directories after building packages.

--combinedupgrade
    During sysupgrade, paru will first perform a refresh, then show its combined menu of repo and AUR packages that will be upgraded. Then after reviewing the PKGBUILDs, the repo and AUR upgrade will start with no need for manual intervention. If paru exits for any reason after the refresh without upgrading, it will be the user's responsibility to either resolve the reason paru exited or run a sysupgrade through pacman directly.

--nocombinedupgrade
    During sysupgrade, pacman -Syu will be called, then the AUR upgrade will start. This means the upgrade menu and PKGBUILD review will be performed after the sysupgrade has finished.

--batchinstall
    When building and installing AUR packages instead of installing each package after building, queue each package for install. Then once either all packages are built or a package in the build queue is needed as a dependency to build another package, install all the packages in the install queue.

--nobatchinstall
    Always install AUR packages immediately after building them.

--rebuild [yes|no|all|tree]
    Always build target packages even when a copy is available in cache. If all is selected then all packages are rebuilt, not only targets. If tree is selected then the whole dependency tree is rebuilt, including already satisfied dependencies. Defaults to no.

--norebuild
    When building packages if the package is found in cache and is an equal version to the one wanted skip the package build and use the existing package.

--sudoloop [= args...]
    Periodically call sudo in the background to prevent it from timing out during long builds. Optionally args can be passed to choose how to loop the command. This may be useful for doas where looping is done differently.

--nosudoloop
    Do not loop sudo calls in the background.

--localrepo [= Repos...]
    Use a local repo to build and upgrade AUR packages. Paru will act on packages in the enabled repos instead of foreign packages. The repo must already be declared in pacman.conf but does not have to already exist on disk. Optionally a list of repos to use can be passed. By default paru will consider all local repos, building new packages into the first listed repo and upgrading the packages in other enabled repos.

--nolocalrepo
    Do not build into a local repo.

--chroot [= /path/to/chroot]
    Build packages in a chroot. This requires the LocalRepo option to be enabled. Optionally a directory may be passed to specify where to create the chroot.

--nochroot
    Don't build packages in a chroot.

--sign [= key]
    Sign packages with gpg. Optionally indicate which key to sign with.

--nosign
    Don't sign package with gpg.

--keeprepocache
    Normally upon AUR packages getting updated the old versions will be removed from the local repo. This option disables that behavior, keeping the both all versions and only updating the DB.

--nokeeprepocache
    Don't keep old packages.

--signdb [= key]
    Sign databases with gpg. Optionally indicate which key to sign with.

--nosigndb
    Don't sign databases with gpg.

EXAMPLES

paru foo
    Search and install from the repos and the AUR using interactive search and install.

paru -Syu
    Update package list and upgrade all currently installed repo and AUR packages.

paru -Sua
    Update all currently installed AUR packages.

paru -S foo
    Installs package foo from the repos or the AUR.

paru -Ss foo
    Searches for package foo on the repos or the AUR.

paru -Si foo
    Gets information about package foo from the repos or the AUR.

paru -S foo --mflags "--skipchecksums --skippgpcheck"
    Installs foo while skipping checksums and PGP checks.

paru -B .
    Build PKGBUILD in current directory.

pacman -Qmq | grep -Ee '-(cvs|svn|git|hg|bzr|darcs)$' | paru -Ta - | paru -S --needed -
    pacaur-like devel check.

ENVIRONMENT VARIABLES

AURDEST
    Can be set to configure the build directory. Overridden by --clonedir.

PARU_CONF
    Overrides where paru will look for its config file.

PARU_PAGER
    The pager paru will use for file review. Has higher priority than PAGER but lower priority than paru.conf.

FILES

CONFIG DIRECTORY
    The config directory is $XDG_CONFIG_HOME/paru/. If $XDG_CONFIG_HOME is unset, the config directory will fall back to $HOME/.config/paru. paru.conf is used to store all of paru's config options. See paru.conf(5) for more about this file.

CACHE DIRECTORY
    The cache directory is $XDG_CACHE_HOME/paru/. If $XDG_CACHE_HOME is unset, the cache directory will fall back to $HOME/.cache/paru. packages.aur holds a list of of all AUR packages for shell completion. By default the completion files are refreshed every 7 days.

STATE DIRECTORY
    The state directory is $XDG_STATE_HOME/paru/. If $XDG_STATE_HOME is unset, the state directory will fall back to $HOME/.local/state/paru. devel.json tracks VCS packages and the latest commit of each source. If any of these commits change the package will be upgraded during a devel update.

BUILD DIRECTORY
    Unless otherwise set this should be the same as CACHE DIRECTORY. This directory is used to store downloaded AUR Packages as well as any source files and built packages from those packages.

PACMAN.CONF
    Paru uses pacman's config file to set certain pacman options either through alpm.rs or paru itself. Options inherited include most libalpm options and pacman options. Notably: Databases, Color and *Path/*Dir options are used.

SEE ALSO
paru.conf(5), makepkg(8), makepkg.conf(5), PKGBUILD(5), pacman(8), pacman.conf(5) See the arch wiki at https://wiki.archlinux.org/index.php/Arch_User_Repository for more info on the AUR.

BUGS
Please report bugs to our GitHub page https://github.com/Morganamilo/paru.

AUTHORS
Morgan <morganamilo@archlinux.org>