Code Monkey home page Code Monkey logo

aura's Introduction

The Aura Package Manager

https://github.com/fosskers/aura/workflows/Tests/badge.svg

Welcome to the main repository for all things Aura.

Table of Contents

Aura

What is Aura?

Aura is a package manager for Arch Linux. It’s main purpose is as an AUR helper, in that it automates the process of installating 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. Thus in Aura, the -A operation is introduced for obtaining AUR packages. -A comes with sub-options you’re used to (-u, -s, -i, etc.).

All Together

Dependencies and packages are not built and installed one at a time. Install order is as follows:

  1. All pacman dependencies (all at once).
  2. All AUR dependencies that don’t depend on each other (all at once, in groups).
  3. All “top level” AUR packages (all at once).

Quiet Building

By default makepkg output is suppressed. If you want the people behind you to think you’re a cool hacker, then this suppression can be disabled by using -x alongside -A.

Run as Root, Build as a User

makepkg gets very upset if you try to build a package as root. That said, a built package can’t be handed off to pacman and installed if you don’t run as root. Other AUR helpers ignore this problem, but Aura does not. Even when run with sudo, packages are built with normal user privileges, then handed to pacman and installed as root.

Know your System

Editing PKGBUILDs mid-build is not default behaviour. An Arch user should know exactly what they’re putting into their system, thus research into prospective packages should be done beforehand. However, for functionality’s sake, the option --hotedit used with -A will prompt the user for PKGBUILD editing. Regardless, as a responsible user you must know what you are building.

Downgradibility

Built AUR package files are moved to the package cache. This allows for them to be easily downgraded when problems arise. Other top AUR helper programs do not do this. The option -B will save a package state, and -Br will restore a state you select. -Au also automatically invokes a save, to help you roll back from problematic updates.

No Orphans

Sometimes dependencies lose their required status, but remain installed on your system. Sometimes AUR package makedepends aren’t required at all after install. Packages like this just sit there, receiving upgrades for no reason. Aura helps keep track of and remove packages like this.

Arch Linux for Everyone

English is well established as the world’s Lingua Franca, and is also 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 simple Haskell reference. Aura code demonstrates:

  • Parser Combinators (megaparsec)
  • CLI Flag Handling (optparse-applicative)
  • Concurrency (scheduler)
  • Shell Interaction (typed-process)
  • Pretty Printing (prettyprinter)

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

Installing Packages

Install an AUR package:

aura -A (package)

Author’s favourite (upgrades, removes make deps, shows PKGBUILD diffs):

aura -Akuax

Just upgrade all installed AUR packages:

aura -Au

Look up information on an AUR package:

aura -Ai (package)

Search the AUR via a regex:

aura -As (regex)

Display an AUR package’s PKGBUILD:

aura -Ap (package)

Package Set Snapshots

Store a record of all installed packages:

aura -B

Restore a saved record. Rolls back, uninstalls, and reinstalls packages as necessary:

aura -Br

Downgrading via the Package Cache

Downgrade a package (this is interactive):

aura -C (package)

Search the package cache for package files via a regex:

aura -Cs (regex)

Reduce the package cache to contain only ‘x’ of each package file:

aura -Cc x

Searching the Pacman Log

View the Pacman Log:

aura -L

Display install / upgrade history for a package:

aura -Li (package)

Search the pacman logfile via a regex:

aura -Ls (regex)

Managing Orphan Packages

Display orphan packages:

aura -O

Change a package’s install reason to Explicitly installed.

aura -O --adopt (package)

Uninstall all orphan packages:

aura -Oj

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 consult LOCALISATION.md.

Aura is currently translated by these generous people:

LanguageTranslators
ChineseKai Zhang
CroatianDenis Kasak and “stranac”
EsperantoZachary “Ghosy” Matthews
FrenchMa Jiehong and Fabien Dubosson
GermanLukas Niederbremer and Jonas Platte
Indonesian“pak tua Greg”
ItalianBob Valantin
JapaneseColin Woodbury and Onoue Takuro
Norwegian“chinatsun”
PolishChris Warrick
PortugueseHenry Kupty, Thiago Perrotta, and Wagner Amaral
RussianKyrylo Silin, Alexey Kotlyarov
SerbianFilip Brcic
SpanishAlejandro Gómez and Sergio Conde
SwedishFredrik Haikarainen and Daniel Beecham

The aur Haskell Library

A library for accessing the AUR, powered by Servant.

The aur-security Tool

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

aura's People

Contributors

aphonicchaos avatar bb010g avatar brcha avatar chinatsu avatar dbeecham avatar dpatti avatar duncanvr avatar eazar001 avatar fosskers avatar ghosy avatar gwils avatar hkupty avatar jiehong avatar jkachmar avatar joehillen avatar joneshf avatar knrafto avatar koterpillar avatar kwpolska avatar kyrylo avatar markusgrosser avatar nc6 avatar pandafoss avatar sauyon avatar stranac avatar streakycobra avatar theotherjimmy avatar tlunter avatar tomsod avatar valantin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.