Home

Awesome

faur

A faur instance is a mirror of all package data on the AUR. faur is...

For instance, visit:

API

There is only a single endpoint: packages.

EndpointFunctionBig-O Efficiency
packages?names=<TOKENS>Look up m-many packages by nameO(mlogn)
packages?names=<TOKEN>&by=provFind packages that satisfy TOKENO(logn)
packages?names=<TOKENS>&by=descFind packages that contain all TOKENS in their names / descriptions / keywordsO(mlogn)

Where multiple TOKENS are accepted, these are separated by commas, as in:

packages?names=spotify,teams,zoom

Caveat: by=desc is term-based, not regex based. This is for performance reasons. So, packages?names=aura&by=desc will match on aura-bin but not on auralcap.

Running a faur Instance

Running a personal faur instance is simple. First, you'll need package data. From the top-level of the project repo:

wget https://aur.archlinux.org/packages-meta-ext-v1.json.gz
gzip -d packages-meta-ext-v1.json.gz

Then simply:

clojure -M -m faur

This will run a local faur server on http://0.0.0.0:8080 . To run in TLS mode, pass --key and --cert as well and HTTPS requests will be accepted on port 443. For example, here is how the official faur instance itself is invoked:

clojure -M -m faur --key /etc/letsencrypt/live/faur.fosskers.ca/privkey.pem --cert /etc/letsencrypt/live/faur.fosskers.ca/fullchain.pem 

Live Remote REPL

For live debugging, an nREPL server is embedded and ran on localhost:7888. If running faur on a remote server, you can access this nREPL remotely by first doing an SSH port-forward on your local machine:

ssh -NL 7888:localhost:7888 root@<IP-OF-REMOTE-SERVER> -v

and then performing a cider-connect-clj (or similar), selecting localhost:7888 as the target. Once connected, you're free to inspect the various Atoms or redefine functions.