published on 05 Dec 2009, tagged with aur, arch, linux, bash


A simple pacman-like interface to the AUR written in bash.

Aurget is designed to make the AUR convenient and speed up tedious actions. The user can decide to search, download, build, and/or install packages consistently through a config file or dynamically by passing arguments on the commandline.

The user can also choose to edit all or no PKGBUILDs, and enable or disable auto-dependency-resolution through the same means.

Checking dependencies comes with risks because PKGBUILDs need to be sourced. Please, if you’re worried about this, be sure to view all PKGBUILDs before proceeding or use the config file or commandline options to disable this check from occurring and remove any associated risk.

You have been warned.


The screenshot:

Aurget Screenshot 

The help:

usage: aurget [ -v | -h | -S* [ --options ] [ -- ] <arguments> ]

        -S  <package>   process <package> using your default sync_mode

        -Sd <package>   download <package>
        -Sb <package>   download and build <package>
        -Sy <package>   download, build, and install <package>

        -Su             process available upgrades using your default sync_mode

        -Sdu            download available upgrades
        -Sbu            download and build available upgrades
        -Syu            download, build, and install available upgrades

        -Ss  <term>     search aur for <term>
        -Ssq <term>     search aur for <term>, print only package names
        -Sp  <package>  print the PKGBUILD for <package>
        -Si  <package>  print extended info for <package>

        --rebuild       always rebuild (ignore your cache)

        --devel         only affects -Su, add all development packages

        --deps          resolve dependencies
        --nodeps        don't resolve dependencies

        --edit          prompt to edit all pkgbuilds
        --noedit        don't prompt to edit any pkgbuilds

        --discard       discard source files after building
        --nodiscard     don't discard source files after building

        --nocolor       disable colorized output
        --noconfirm     auto-answer y to all prompts

        --ignore '<package> <package> <...>'
                        add additional packages to be ignored

        --mopt '-opt -opt ...'
                        add additional options to the build command

        --popt '-opt -opt ...'
                        add additional options to the install command

        -v, --version   display version info
        -h, --help      display this

        --option=value  set config <option> as <value> for this run only
The --option=value flag is powerful in that it can greatly customize an aurget command for specific packages that require it (like an nvidia-beta / nvidia-utils-beta upgrade which requires additional pacman and makepkg options to complete). Beware that this command sets the variable it’s passed even if that’s not a “valid” variable, so it may have unintended consequences (i.e. if you pass --HOME=foo or something silly).


Install the AUR package here.

Follow development via my git repo here.

Bugs and Features

If you’ve found a bug or want to request a feature, please let me know via email. If you can implement what you’re looking for, please fork my git repo and send me a pull request.

Aurget does not and will not search or install from official repos. This is by design and will not be implemented even if you offer a patch.

Use packer or clyde if this is what you’re looking for.

Known Bugs

If you pass an aur package before one of its dependencies as the targets to aurget, it will not reorder the targets and the installation will probably fail on the first package. Accounting for this would require a lot of unneeded code. The makepkg error will tell you the dep is not satisfied and it’s easy enough to adjust your targets and run it again.

In a somewhat related way, it is possible, depending on the structure of multi-level dependencies, for aurget to miss a dependency. As an example:

# coding specifically for this scenario:

    `-- depends
        |-- foo
        |-- bar
        |   `- depends
        |      `- baz
        `-- baz

# would break this one (and vice versa):

    `-- depends
        |-- foo
        |-- baz
        `-- bar
            `- depends
               `- baz

Aurget will filter out the duplicate dependency (baz), but in one of the cases it will be placed behind the package that needs it and makepkg will fail. I consider this improper packaging and have decided to not try and code around it. If you encounter this scenario, I encourage you to post a comment on the aur page of the parent package explaining that baz is unneeded in his depends array because it’s pulled in by bar.

Some aur packages report a bad url to their tarball in the JSON interface. Aurget checks the downloaded file, if it’s not a valid archive, it will try http://aur.archlinux.org/packages/$package/$package.tar.gz as a fallback. If neither the JSON url nor the fallback url provide a valid archive, well, there’s not much I can do.