Installing AUR Packages
Let's walk through the full process of installing an AUR package. This will show us how to discover packages, install them, and upgrade them.
💡 Tip: Just want to update all your AUR packages? Aura's author uses
aura -Au
. Remember, no need to callsudo
yourself.
💡 Tip: For the full list of all options with detailed descriptions, see
man aura
.
Installing a Package
Searching for a Package
Let's say we want to install a package that can render .md
README files for
us. First, we search the AUR for candidates:
> aura -As readme
aur/python-grip 4.6.1-1 (22 | 0.00)
Preview GitHub Markdown files like Readme locally before committing them
aur/python-grip-git 4.5.2-1 (15 | 0.00)
Preview GitHub Markdown files like Readme locally before committing them.
aur/ruby-github-markup 4.0.2-1 (4 | 0.00)
The code GitHub uses to render README.markup
aur/k810-conf 0.1-9 (3 | 0.00)
Logitech K810 Keyboard Configurator, change function keys (F-keys) behavior. Read USAGE at https://aur.archlinux.org/cgit/aur.git/tree/README.md?h=k810-conf
aur/cargo-readme 3.3.1-1 (3 | 0.24)
A cargo subcommand to generate README.md content from doc comments
... etc ...
By default, results are ordered by their vote count. If -As
filled the screen
and we only wish to see a few results, we can filter with --limit
:
> aura -As readme --limit 3
aur/python-grip 4.6.1-1 (22 | 0.00)
Preview GitHub Markdown files like Readme locally before committing them
aur/python-grip-git 4.5.2-1 (15 | 0.00)
Preview GitHub Markdown files like Readme locally before committing them.
aur/ruby-github-markup 4.0.2-1 (4 | 0.00)
The code GitHub uses to render README.markup
--abc
can be used to sort alphabetically instead.
Scrutinizing a Package
Alright, python-grip
looks good. Let's take a closer look...
> aura -Ai python-grip
Repository : aur
Name : python-grip
Version : 4.6.1-1
AUR Status : Up to Date
Maintainer : pancho
Project URL : https://github.com/joeyespo/grip
AUR URL : https://aur.archlinux.org/packages/python-grip
License : MIT
Groups :
Provides :
Depends On : python python-docopt python-flask python-markdown python-path-and-address python-pygments python-requests
Make Deps : python-setuptools
Optional Deps :
Check Deps :
Votes : 22
Popularity : 0.00
Description : Preview GitHub Markdown files like Readme locally before committing them
Keywords :
Submitted : 2017-02-09
Updated : 2022-04-17
Does the PKGBUILD look alright?
> aura -Ap python-grip
# Maintainer: pancho horrillo <pancho at pancho dot name>
# Contributor: Clayton Craft <clayton at craftyguy dot net>
pkgname=python-grip
pkgver=4.6.1
pkgrel=1
pkgdesc="Preview GitHub Markdown files like Readme locally before committing them"
arch=('any')
license=('MIT')
url="https://github.com/joeyespo/grip"
depends=('python' 'python-docopt' 'python-flask' 'python-markdown'
'python-path-and-address' 'python-pygments' 'python-requests')
makedepends=('python-setuptools')
source=("$pkgname-$pkgver.tar.gz::https://github.com/joeyespo/grip/archive/v$pkgver.tar.gz")
sha256sums=('6bc3883f63395c566101187bc1f1d103641c99913b7122f942d56e108e649d83')
package() {
cd grip-$pkgver
python setup.py install --root="$pkgdir" --optimize=1
install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
}
Nothing nefarious here.
💡 Tip: It's important to confirm the content of the PKGBUILD like this, as these are raw Bash commands that will be executed on your system during the build process.
A Normal Install
> aura -A python-grip
aura :: Determining dependencies...
aura :: Repository dependencies:
python-docopt
aura :: AUR packages:
python-grip
python-path-and-address
aura :: Proceed? [Y/n]
... pacman output ...
aura :: Preparing build directories...
aura :: Building python-path-and-address...
... makepkg output ...
aura :: Done.
A few things to note:
python-grip
has both official and AUR dependencies. These have to be built and installed in a specific order forpython-grip
to even build.- Under the hood, Aura calls
makepkg
to drive the build andpacman
to finalise the installation. - If two or more packages don't depend on each other, they'll be built one after another and installed at the same time. This avoids needless user prompting.
💡 Tip: Aura used to have an option
-x
to exposemakepkg
output. This is now the default behaviour.
Automatically Removing makedepends
There's a difference between the dependencies that a package needs to build
and the dependencies it needs to run. We call the former makedepends. Once a
package is installed, we no longer need its makedepends sitting around on our
machine. Adding -a
to -A
will automatically clear them out:
> aura -Aa grimshot
aura :: Determining dependencies...
aura :: Repository dependencies:
scdoc
aura :: AUR packages:
grimshot
aura :: Proceed? [Y/n]
... the usual ...
aura :: Done.
checking dependencies...
Packages (1) scdoc-1.11.3-1
Total Removed Size: 0.03 MiB
:: Do you want to remove these packages? [Y/n]
scdoc
was only necessary during the build, so we're prompted to uninstall it.
If you'd like to turn this behaviour on permanently, you can set it within config:
[aur]
delmakedeps = true
Altering the PKGBUILD Before Building
Sometimes you want to change something specific about how a package is built.
Without a tool like Aura, you'd clone the package from the AUR, edit the
PKGBUILD, and then run makepkg
, handling dependencies yourself.
Aura's --hotedit
flag will let you edit a PKGBUILD on-the-fly. In the example
below, I add echo "I CHANGED THE PKGBUILD"
to the build commands:
> aura -Aa python-grip --hotedit
aura :: Determining dependencies...
... the usual ...
aura :: Building python-grip...
aura :: Edit the PKGBUILD? [Y/n]
... Your EDITOR opens, and you save your changes to the real PKGBUILD file ...
==> Making package: python-grip 4.6.1-1 (Sat 13 Jul 2024 07:08:37 AM JST)
==> Starting package()...
I CHANGED THE PKGBUILD
... normal makepkg output, etc ...
Some things to note:
- If
.install
or.patch
files are present,--hotedit
will also prompt you to edit those. - You can change the dependency lists, but this will only affect
makepkg
's dependency resolution, not Aura's. If you want Aura to skip dependency checks completely because you know you're right (and you knowmakepkg
will succeed after you hotedit), use the--skipdepcheck
flag. See issue #605 for more information. - If you want customizations to a PKGBUILD to apply to all future builds of a
package, it's recommended that you maintain a separate PKGBUILD and call
makepkg
yourself.
If you'd like to always be prompted for hoteditting, you can set it within config:
[aur]
hotedit = true
PKGBUILD Analysis
If requested, Aura will run Shellcheck on PKGBUILDs to check for oddities:
> aura -A goverlay-git --shellcheck
... the usual ...
aura :: Building goverlay-git...
In PKGBUILD line 32:
for i in "${pkgname%-git}.lpi"; do
^-------------------^ SC2066 (error): Since you double quoted this, it will not word split, and the loop will only run once.
For more information:
https://www.shellcheck.net/wiki/SC2066 -- Since you double quoted this, it ...
aura :: Proceed? [Y/n]
If you'd like to always run shellcheck
this way, you can set it within config:
[aur]
shellcheck = true
Jailed Building via pkgctl build
For extra security, you can build packages in a chroot
. This ensures that the
build process will not affect your existing filesystem. For the moment, this
option is gated by configuration; no CLI flag is available:
[aur]
chroot = ["fortls", "timelineproject-hg"]
This means that when these particular packages are built, it will be done in a
chroot
. Transitive AUR dependencies will be injected properly into the build
environment.
Using a "build user"
The flags --build
and --builduser
can be used to alter where the building
occurs and under which user it occurs, respectively. While usually not necessary
by default, these can be useful for system administrators who want stricter
control.
Blindly Accepting all Prompts
Tired of pressing the Enter
key? Or maybe you've automated aura
into a
script. In these cases, you may want to accept all prompts automatically.
pacman
exposes the --noconfirm
flag for this, which also affects Aura.
Updating your AUR Packages
aura -Au
is the standard command, and is run without sudo
.
> aura -Au
aura :: Fetching package information...
aura :: Comparing package versions...
aura :: AUR packages to upgrade:
ghcup-hs-bin :: 0.1.22.0-1 -> 0.1.30.0-1
tic-80-git :: r2633.687fb340-1 -> r2883.3cf27c5e-1
yed :: 1:3.23.2-1 -> 1:3.24-1
aura :: Determining dependencies...
aura :: Repository dependencies:
... redacted ...
aura :: AUR packages:
ghcup-hs-bin
tic-80-git
yed
aura :: Proceed? [Y/n]
The options that apply to normal -A
, like -a
and --hotedit
, also apply
here. Of course, it's simplest to set those in config if you know your
preferences. See man aura
or aura -Ah
for more options.
Displaying PKGBUILD Changes
Hey wait a minute, aren't we supposed to check PKGBUILDs before building
packages? -k
will show us any changes that were made to a PKGBUILD compared to
the version we have installed:
> aura -Auk
aura :: Fetching package information...
aura :: Comparing package versions...
aura :: AUR packages to upgrade:
ghcup-hs-bin :: 0.1.22.0-1 -> 0.1.30.0-1
yed :: 1:3.23.2-1 -> 1:3.24-1
aura :: Determining dependencies...
aura :: AUR packages:
ghcup-hs-bin
yed
aura :: Proceed? [Y/n]
aura :: Preparing build directories...
aura :: Building yed...
aura :: Display diffs of build files? [Y/n]
diff --git a/.SRCINFO b/.SRCINFO
index bc810a7..32f1f1f 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,6 +1,6 @@
pkgbase = yed
pkgdesc = Very powerful graph editor written in java
- pkgver = 3.23.2
+ pkgver = 3.24
pkgrel = 1
epoch = 1
url = http://www.yworks.com/en/products_yed_about.html
@@ -9,11 +9,11 @@ pkgbase = yed
license = custom
depends = hicolor-icon-theme
depends = java-runtime
- source = https://www.yworks.com/resources/yed/demo/yEd-3.23.2.zip
+ source = https://www.yworks.com/resources/yed/demo/yEd-3.24.zip
source = yed.desktop
source = yed
source = graphml+xml-mime.xml
- sha256sums = 4f96611718df696de2f33eeb2cd78bfbbdacce52390afea8d00441b6fb175e20
+ sha256sums = 842909f6e4c15399b660f316056499e63e931f95ade43d850045d852d3128947
sha256sums = cc6957cde6eba0d82ea523b0257f8c91fd1e330a1e2ad7d64890e48a2450aa98
sha256sums = 731b54c6e731704efe9847d78e2df474d59042452ace29d2786d76891295249e
sha256sums = e751b69ed8a25faf46d4e4016ed8f1774abc88679067934a6081348e3d6fc332
diff --git a/PKGBUILD b/PKGBUILD
index f9ea04e..cb06126 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -10,7 +10,7 @@
# https://github.com/michaellass/AUR
pkgname=yed
-pkgver=3.23.2
+pkgver=3.24
pkgrel=1
epoch=1
pkgdesc='Very powerful graph editor written in java'
@@ -22,7 +22,7 @@ source=("https://www.yworks.com/resources/yed/demo/yEd-${pkgver}.zip"
'yed.desktop'
'yed'
'graphml+xml-mime.xml')
-sha256sums=('4f96611718df696de2f33eeb2cd78bfbbdacce52390afea8d00441b6fb175e20'
+sha256sums=('842909f6e4c15399b660f316056499e63e931f95ade43d850045d852d3128947'
'cc6957cde6eba0d82ea523b0257f8c91fd1e330a1e2ad7d64890e48a2450aa98'
'731b54c6e731704efe9847d78e2df474d59042452ace29d2786d76891295249e'
'e751b69ed8a25faf46d4e4016ed8f1774abc88679067934a6081348e3d6fc332')
aura :: Proceed? [Y/n]
Once again, nothing evil-looking here. If you'd like to always see diffs like this, you can set it within config:
[aur]
diff = true
Including *-git
Packages
The AUR has many packages postfixed with -git
, -svn
, etc. These typically
pull straight from the master
branch of some code respository, and so
comparing version numbers to detect updates doesn't always work.
--git
will consider all such packages for updates:
> aura -Au --git
aura :: Fetching package information...
aura :: Comparing package versions...
aura :: AUR packages to upgrade:
ghcup-hs-bin :: 0.1.22.0-1 -> 0.1.30.0-1
yed :: 1:3.23.2-1 -> 1:3.24-1
aura :: VCS packages to rebuild:
clasp-cl-git
libmgba-git
mgba-qt-git
timelineproject-hg
aura :: Determining dependencies...
aura :: Repository dependencies:
qt6-tools
aura :: AUR packages:
clasp-cl-git
ghcup-hs-bin
mgba-git
timelineproject-hg
yed
aura :: Proceed? [Y/n]
If you'd like to always consider such packages with -u
, you can set it within
config:
[aur]
git = true