• Stars
    star
    1,569
  • Rank 28,716 (Top 0.6 %)
  • Language
    Haskell
  • Created almost 12 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A secure, multilingual package manager for Arch Linux and the AUR.

The Aura Package Manager

img img img

🇬🇧 🇯🇵 🇭🇷 🇸🇪 🇩🇪 🇪🇸 🇵🇹 🇫🇷 🇷🇺 🇮🇹 🇷🇸 🇳🇴 🇮🇩 🇨🇳 🇳🇱 🇹🇷 🇸🇦 🇺🇦 🇷🇴 🇻🇳 🇨🇿 🇰🇷

Welcome to the main repository for Aura, a secure, multilingual package manager for Arch Linux.

Check out The Aura Book for all knowledge and usage instructions!

If Aura has made your life easier, please consider buying me a coffee or supporting Aura through Github Sponsors :octocat:. Your help goes a long way!

Table of Contents

Aura

What is Aura?

Aura is a package manager for Arch Linux. Its original purpose is as an AUR helper, in that it automates the process of installing packages from the Arch User Repositories. It is, however, capable of much more.

The Aura Philosophy

Aura is Pacman

Aura doesn't just mimic pacman; it is pacman. All pacman operations and their sub-options are allowed. Some even hold special meaning in Aura as well.

Arch is Arch - AUR is AUR

-S yields pacman packages and only pacman packages. This agrees with the above. In Aura, the -A operation is introduced for obtaining AUR packages. -A comes with sub-options you're used to (-u, -s, -i, etc.).

Secure Package Building

PKGBUILDs from the AUR can contain anything. It's a user's responsibility to verify the contents of a PKGBUILD before building, but people can make mistakes and overlook details. Aura scans PKGBUILDs before building to detect bash misuse and other exploits. The -P command is also provided for scanning your own PKGBUILDs.

Also, while pre-build PKGBUILD editing is not default behaviour, this can be achieved with --hotedit.

Downgradibility

Aura allows you to downgrade individual packages to previous versions with -C. It also handles snapshots of your entire system, so that you can roll back whole sets of packages when problems arise. The option -B will save a package state, and -Br will restore a state you select. -Su and -Au also invoke a save automatically.

Arch Linux for Everyone

English is the dominant language of computing and the internet. That said, it's natural that some people are going to be more comfortable working in their native language. From the beginning, Aura has been built with multiple-language support in mind, making it very easy to add new ones.

Haskell

Aura is written in Haskell, which means easy development and beautiful code. Please feel free to use it as a Haskell reference. Aura code demonstrates:

  • Parser combinators (megaparsec)
  • CLI flag handling (optparse-applicative)
  • Concurrency (scheduler)
  • Shell interaction (typed-process)
  • Pretty printing (prettyprinter)
  • Logging (rio)
  • Modern Haskell project architecture (config, CI, distribution)

Installation

Prebuilt Binaries

It is recommended to install the prebuilt binary of Aura:

git clone https://aur.archlinux.org/aura-bin.git
cd aura-bin
makepkg
sudo pacman -U <the-package-file-that-makepkg-produces>

Building from Source

You will need the Stack Tool for Haskell to compile Aura yourself. Then:

git clone https://github.com/fosskers/aura.git
cd aura
stack install -- aura

This may take a while to initially build all of Aura's dependencies. Once complete, your aura binary will be available in /home/YOU/.local/bin/.

Sample Usage

Full usage information can be found in Aura's man page.

Installing Packages

Command Function
aura -A <package> Install an AUR package.
aura -Au Upgrade all installed AUR packages.
aura -Akuax Author's favourite (upgrades, removes makedeps, shows PKGBUILD diffs, shows progress)
aura -Ai <package> Look up information on an AUR package.
aura -As <regex> Search the AUR via a regex.
aura -Ap <package> Display a package's PKGBUILD.
aura -Ad <package> List a package's dependencies.

Package Set Snapshots

Command Function
aura -B Store a JSON record of all installed packages.
aura -Br Restore a saved record. Rolls back and uninstalls as necessary.
aura -Bc <n> Delete all but the most recent n saved states.
aura -Bl Show all saved package state filenames.

Downgrading via the Package Cache

Command Function
aura -C <package> Downgrade a package.
aura -Cs <regex> Search the package cache for files that match a regex.
aura -Cc <n> Delete all but the most recent n versions of each cached package.
aura -Cv Delete all of the /var/cache/aura/vcs cache

Searching the Pacman Log

Command Function
aura -L View the Pacman log.
aura -Li <package> View the install / upgrade history of a package.
aura -Ls <regex> Search the Pacman log via a regex.

Managing Orphan Packages

Orphan packages are those whose install reason is marked as "As Dependency", but are not actually depended upon by any installed package.

Command Function
aura -O Display orphan packages.
aura -Oa <package> Change a package's install reason to Explicitly installed.
aura -Oj Uninstall all orphan packages.

PKGBUILD Security Analysis

As mentioned above, the -P commands can help us detect bash usage that conflicts with the AUR guidelines, as well as outright exploits.

Command Function
aura -P <stdin> Analyse a PKGBUILD piped from -Ap.
aura -Pf <file> Analyse a PKGBUILD file.
aura -Pd <dir> Analyse the PKGBUILD file found in a directory.
aura -Pa Analyse all locally installed AUR packages.

Configuration

Aura looks for a configuration file at /etc/aura.conf, but won't break if one isn't present. A template config file can be found here and contains all instructions. If you install Aura via its AUR package, this file is added for you.

Localisation

As mentioned in the Philosophy above, adding new languages to Aura is quite easy. If you speak a language other than those available and would like it added to Aura, please see the Localisation section of The Aura Book.

Credits

Aura is sponsored by these wonderful people:

@ace-deuce @tianip220 @sidagrawal @da-moon

Aura has been translated by these generous people:

Language Translators
Arabic "Array in a Matrix"
Chinese Kai Zhang
Croatian Denis Kasak and "stranac"
Czech Daniel Rosel
Dutch Joris Blanken / Heimen Stoffels
Esperanto Zachary "Ghosy" Matthews
French Ma Jiehong and Fabien Dubosson
German Lukas Niederbremer and Jonas Platte
Indonesian "pak tua Greg"
Italian Bob Valantin and Cristian Tentella
Japanese Colin Woodbury and Onoue Takuro
Korean "Nioden"
Norwegian "chinatsun"
Polish Chris Warrick, Michał Kurek
Portuguese Henry Kupty, Thiago Perrotta, and Wagner Amaral
Romanian "90", "benone"
Russian Kyrylo Silin, Alexey Kotlyarov
Serbian Filip Brcic
Spanish Alejandro Gómez, Sergio Conde and Max Ferrer
Swedish Fredrik Haikarainen and Daniel Beecham
Turkish Cihan Alkan
Ukrainian Andriy Cherniy
Vietnamese "Kritiqual"

Aura's logo is thanks to the designer Cristiano Vitorino.

The aur Haskell Library

A library for accessing the AUR.

The aursec Tool

Performs a sweep of all PKGBUILDs on the AUR, looking for Bash misuse.

More Repositories

1

scalaz-and-cats

Usage examples and benchmarks between Scalaz and Cats (w/ Haskell ground-truth).
Scala
488
star
2

linya

Simple concurrent progress bars.
Rust
98
star
3

cl-transducers

Transducers: Ergonomic, efficient data processing
Common Lisp
84
star
4

cargo-aur

Prepare Rust projects to be released on the Arch Linux User Repository
Rust
74
star
5

scala-benchmarks

An independent set of benchmarks for testing common Scala idioms.
Scala
65
star
6

mapalgebra

Efficient, polymorphic Map Algebra in Haskell.
Haskell
36
star
7

org-mode

Parser for Emacs org-mode files
Haskell
31
star
8

credit

A fast tool for measuring Github repository contributions.
Rust
30
star
9

dotfiles

My various dotfiles.
Lua
29
star
10

totp-lite

A simple, correct TOTP library.
Rust
27
star
11

filepaths

Modern and consistent filepath manipulation for Common Lisp.
Common Lisp
24
star
12

rs-versions

A library for parsing and comparing software version numbers.
Rust
21
star
13

vectortiles

A native Haskell codec for Mapbox Vector Tiles.
Haskell
21
star
14

kanji

Haskell suite for determining what 級 (level) of the 漢字検定 (national Kanji exam) a given Kanji belongs to.
Haskell
21
star
15

versions

Haskell types and parsers for software version numbers.
Haskell
20
star
16

alg-a-day

An algorithm a day, for every day in August, 2011.
C
20
star
17

rs-setwall

Script for setting wallpapers in Linux window managers.
Rust
18
star
18

myshroom-api

An API for accessing our mushroom identification engine.
Scala
18
star
19

validated

The cumulative sibling of `Result` and `Either`.
Rust
18
star
20

microlens-aeson

Lenses and Traversals for Aeson, based on Microlens.
Haskell
14
star
21

nonempty-collections

Correct-by-construction non-empty collections.
Rust
13
star
22

streaming-osm

A hand-written streaming byte parser for OpenStreetMap Protobuf data.
Haskell
12
star
23

elm-touch

Extended Touch library for Elm.
Elm
12
star
24

streak

A minor mode for Emacs to track a streak.
Emacs Lisp
10
star
25

fosskers.ca

My personal site.
JavaScript
10
star
26

transducers.el

Ergonomic, efficient data processing for Emacs Lisp.
Emacs Lisp
7
star
27

playground

Testing various things in various languages. Meant as a reference.
C
7
star
28

crypto-classical

A Haskell library for using and attacking Classical Encryption Schemes.
Haskell
7
star
29

servant-xml

Servant support for the XML Content-Type.
Haskell
6
star
30

xkcd4me

A python script that manages the downloading and viewing of xkcd comics from the command line.
Python
6
star
31

active

Keep your Github Action versions up-to-date. 使用の Github Actions を最新に!
Go
5
star
32

pong-amethyst

A Pong game made with Amethyst.
Rust
5
star
33

pkill

Terminate processes/programs by their name, not their pid!
Python
5
star
34

tetris

A 3D Tetris game using OpenGL in C.
C
5
star
35

org-table-color

Add colour to your org-mode table cells.
Emacs Lisp
5
star
36

2048

An implementation of 2048 in Elm.
Elm
4
star
37

streaming-pcap

Stream packets via libpcap.
Haskell
4
star
38

kanji-net

漢字の「形」による辞典
Rust
4
star
39

enigma

An encryption algorithm inspired by the Enigma Machine.
Haskell
4
star
40

draenor

Convert OSM PBF files into ORC, and upload them to S3.
Haskell
3
star
41

sly-overlay

Overlay Common Lisp evaluation results.
Emacs Lisp
3
star
42

rs-kanji

A library for the handling and analysis of Japanese text. 日本漢字分析
Rust
3
star
43

cog

OpenGL Helper Libraries for C
C
3
star
44

cl-nonempty

Non-empty collections for Common Lisp.
Common Lisp
3
star
45

mapart

Create artwork from satellite imagery.
Haskell
2
star
46

USS-Endeavour

Core computation engine for the United Space Ship Endeavour.
Haskell
2
star
47

hisp

Hisp - A simple Lisp written in Haskell.
Haskell
2
star
48

pipes-random

Producers for handling randomness.
Haskell
2
star
49

servant-docker

A docker image running a simple Servant server.
Haskell
2
star
50

albhed

A translator for the Al Bhed language.
Rust
2
star
51

disown

Drop ownership via a method.
Rust
2
star
52

memcon

Haskell script for converting memory amounts.
Haskell
2
star
53

hledger-parser

A parser for Hledger `.journal` files in Rust.
Rust
2
star
54

opengl-shaders

A C library that makes creating OpenGL shader programs simpler.
C
2
star
55

monadrules

Test your Monads. Are they law-abiding?
Haskell
2
star
56

adder

Adds up all the numbers in a file.
Haskell
2
star
57

election

Analysis of Canadian Federal Elections Data
Rust
2
star
58

python-libs

My personal Python libraries, which I wrote for various tasks.
Python
2
star
59

mt

Prints a multiplication table.
Haskell
2
star
60

rmexecs

Removes all executable files in the current directory on POSIX systems.
Haskell
2
star
61

setwall

Script for setting wallpapers in Linux window managers.
Haskell
2
star
62

tgrep

A tool to locate and store entries in Reddit's large `.log` files.
Python
2
star
63

ColinPrelude

Haskell library filled with handy functions that I wrote for my own use.
Haskell
2
star
64

aur

The PKGBUILDs for the AUR packages I maintain.
Shell
2
star
65

colour-hist

A Computer Vision library for object recognition via Colour Histograms.
Haskell
2
star
66

smack-sqlite

Testing concurrent writes to SQLite
Rust
2
star
67

transducers.fnl

Transducers: Ergonomic, efficient data processing
Fennel
1
star
68

arel

A tool to help create Aura releases.
Haskell
1
star
69

aafaconf

Registration server for AAFA Conf.
Elm
1
star
70

hello-webserver

Implementing a basic web server in several languages.
Rust
1
star
71

rna

Haskell
1
star
72

totp

A simple, correct TOTP library for Go.
Go
1
star
73

booklist

The books I've read
1
star
74

ocp

Lines up code nicely for people with OCD.
Python
1
star
75

vectorpipe-io

An IO test for the VectorPipe library.
Scala
1
star
76

spatialsort

Haskell
1
star
77

school-code

Code for SFU CMPT assignments.
C
1
star
78

arch-dotfiles

dotfiles on my Arch Linux system.
Emacs Lisp
1
star
79

skylighting-lucid

Lucid support for Skylighting
Haskell
1
star
80

new-horizon-2012

Analysis of the New Horizon English textbooks.
1
star
81

doom-hr

HR tools for Doom Emacs Incorporated.
Emacs Lisp
1
star
82

jp-wiki

Analyze every Japanese Wikipedia article for Kanji data.
Haskell
1
star
83

tokipona

A small script to count possible Toki Pona words.
Haskell
1
star
84

fto

Simple FLAC-to-OGG converter. Requires ffmpeg.
Haskell
1
star
85

pong-ggez

A simple Pong game written with ggez.
Rust
1
star
86

opengl-linalg

A C library for performing OpenGL-friendly Linear Algebra.
C
1
star
87

ctfp

Solutions to problems in "Category Theory for Programmers"
Haskell
1
star
88

functional-summer

Haskell
1
star
89

axe

Cut arbitrarily large OSM XML files with no memory overhead.
Haskell
1
star
90

Parse-Quote

Haskell
1
star
91

csss-algs

Algorithms and study scripts for various Computing Science courses
Haskell
1
star
92

wasm-game-of-life

An implementation of the Game of Life using Rust's WASM support.
Rust
1
star
93

osmesa-analytics-server

Dummy server that serves random data.
Haskell
1
star
94

WiFeel

An Android app for developing an extra sense for Wifi fields.
Java
1
star
95

bounded-queue

A strict, immutable, thread-safe, single-ended, bounded queue.
Haskell
1
star
96

projecteuler

Solutions to Project Euler problems in various languages.
Haskell
1
star
97

resume

My resume.
TeX
1
star