Giter VIP home page Giter VIP logo

aura's Introduction

The Aura Package Manager

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!

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/haskell
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/.

Alteratively, you can try the Alpha of Aura's new version:

cd rust
cargo install --path .

This will install the binary to /home/YOU/.cargo/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.

Mailing List

You can join Aura's mailing list here: https://lists.sr.ht/~fosskers/aura

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 has been translated by these generous people:

Language Translators
Arabic "Array in a Matrix"
Chinese Kai Zhang and Alex3236
Croatian Denis Kasak and "stranac"
Czech Daniel Rosel
Dutch Joris Blanken and Heimen Stoffels
Esperanto Zachary "Ghosy" Matthews
French Ma Jiehong and Fabien Dubosson
German Lukas Niederbremer and Jonas Platte
Hindi "yozachar"
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.

aura's People

Contributors

62832 avatar array-in-a-matrix avatar aspidites avatar bb010g avatar brcha avatar chinatsu avatar cristianovitorino avatar dbeecham avatar dependabot[bot] avatar dpatti avatar duncanvr avatar fosskers avatar ghosy avatar hkupty avatar jiehong avatar jkachmar avatar joehillen avatar joneshf avatar knrafto avatar koterpillar avatar kwpolska avatar kyrylo avatar morganamilo avatar nc6 avatar oltulu avatar pandafoss avatar ratijas avatar stranac avatar theotherjimmy avatar velocitatem avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aura's Issues

Packages with '.' in their name don't build

aura >>= Building `boost.process`...
chown: cannot access ‘/var/cache/pacman/pkg/boost.process-14850/boost’: No such file or directory
aura: readProcess: chown "-R" "colin" "/var/cache/pacman/pkg/boost.process-14850/boost" (exit 1): failed

or

aura >>= Building `gstreamer0.10-good-plugins-slim`...
chown: cannot access ‘/var/cache/pacman/pkg/gstreamer0.10-good-plugins-slim-15050/gstreamer0’: No such file or directory
aura: readProcess: chown "-R" "colin" "/var/cache/pacman/pkg/gstreamer0.10-good-plugins-slim-15050/gstreamer0" (exit 1): failed

Dependency check failed

Hello. I'm trying to install gstreamer0.10-good-plugins-slim and I find the following error

[carlos@sunspear ~]$ sudo aura -Aux gstreamer0.10-good-plugins-slim
aura >>= Fetching package information...
aura >>= Comparing package versions...
aura >>= No AUR package upgrades necessary.
aura >>= Determining dependencies...
aura >>= Dependency checking failed for these reasons:
The dependency gstreamer0.10-good demands version =0.10.31but the most recent version is .10.31-1.

Maybe it's due to the odd package name?

Thanks for the help.

JSON to speed up `-Au`

Need to connect to the AUR using it's API and JSON. This should speed up -Au significantly.

No `-Ai` or `-As`

These two options are lacking, and are big. Will likely require all sorts of json.

Display local and new version of updatable package with -Syu/-Ayu

This feature request is influenced by my usage of yaourt, but I think it's a good feature.

Currently, any update is found, but only the new versions are displayed.
Here is an example (knowing that I still use the old version of ibus).

aura -Syu

:: Starting full system upgrade...
resolving dependencies...
looking for inter-conflicts...

Targets (4): ibus-1.4.99.20121109-1  ibus-pinyin-1.4.99.20120808-1  ibus-table-1.4.99.20121112-1  pyzy-1.0-1

Total Installed Size:   16.04 MiB
Net Upgrade Size:       -23.74 MiB

Well, this is basically pacman's output.

Here is what yaourt gives:
yaourt -Syu

==> Software upgrade (new version) :
extra/ibus            1.4.2-2          -> 1.4.99.20121109-1
community/ibus-pinyin 1.4.0-2          -> 1.4.99.20120808-1
community/ibus-table  1.3.9.20110827-1 -> 1.4.99.20121112-1

==> New package :
community/pyzy        1.0-1            (required by ibus-pinyin)

==> Continue upgrade ? [Y/n]
==> [V]iew package detail   [M]anually select packages
==> --------------------------------------------------

It gives way more informations:

  1. it has colours
  2. Upgrades are divided into sections (new revisions & new versions)
  3. each repo is displayed
  4. we clearly see that a new package will be installed, since needed by the upgrade of another one.

Therefore, I would like to ask if this could be done in any way. I have not written anything about the last two lines, because I think they are useless.

`-A` gives weird messages when there is no internet connection

colin@ko-linux ~/c/h/aura> sudo ./aura -A nanq
[sudo] password for colin: 
aura >>= The following are not packages:
nanq

aura >>= Determining dependencies...
aura >>= Dependency checking failed for these reasons:
No AUR packages specified for install.

List of AUR packages that don't build

When you find a package that didn't build, please explain how the building failed. Thank you!
Here they are:

UNSOLVED (as of 2018 June)

Currently there are no reported unbuildable packages with the aura-1.5 branch.

Save and restore state

New major feature.

Every name and version of currently installed packages will be saved in a file upon using the --save option. Running --restore will present a choice of which saved state to revert to, and then attempt to downgrade to those versions via packages in the cache. Installed packages that weren't installed at the time of the save will be removed.

This is important because it can sometimes be useful to rollback the overall state of installed software on one's machine, perhaps after a large upgrade breaks something.

Internet goes apeshit, aura goes apeshit even more.

I lost my network connection* before hitting “y” for Continue. And aura did some weird stuff.

(also, this inspired me to validate PB’s behavior, and it does a very human thing of telling the actual error and a human-friendly message.)

[kwpolska@kwpolska-lin testtest]% sudo aura -A pkgbuilder trashman
[sudo] password for root: 
aura >>= Determining dependencies...
aura >>= Main AUR packages:
pkgbuilder
trashman

aura >>= Continue? [y/n] y
aura >>= Building `pkgbuilder`...
aura: readProcess: curl "https://aur.archlinux.org/packages/pk/pkgbuilder/pkgbuilder.tar.gz" "-L" "--fail" "--silent" "--output" "/var/cache/pacman/pkg/pkgbuilder-6884/pkgbuilder.tar.gz" (exit 6): failed
[kwpolska@kwpolska-lin testtest]% sudo aura -A pkgbuilder trashman
aura >>= The following are not packages:
pkgbuilder
trashman

aura >>= Determining dependencies...
aura >>= Dependency checking failed for these reasons:
No AUR packages specified for install.

[kwpolska@kwpolska-lin testtest]%

Non-AUR, Non-ABS packages break `-Au`

In particular, the recent change of grub to an AUR package breaks this.

Check the output -Qm for packages that are actually AUR packages?
For some reason packer does not explode as Aura is here.

`-V` message goes insane in most terminals

I wonder which ones? My method for animating pacman is pretty reliant on manually moving the cursor around. If the terminal is ignoring that I don't really know what else to do.

Config file

-- This should be at ~/.config/aura/aura-conf.hs
-- How do I get it there? And what about `.pacnew`s?

This is how I do it in PB and Trashman*, and how 99% of the universe does that:

  1. check if ~/.config/, ~/.config/aura/ exist. If not, create. Bonus points if you check the env variable XDG_CONFIG_HOME and work according to it, falling back on ~/.config/.
  2. check if ~/.config/aura/aura-conf.hs exists. If not, copy over from an existing file somewhere in the system (I suggest somewhere like /etc/)
  3. Finally, read the file. Bonus points if you use /etc/ as a global config file.

Also, I don't think you need to bother with pacnews, but if you do, man PKGBUILD.

* I actually do XDG_CONFIG_HOME/kwpolska/{pkgbuilder,trashman}.

colours missing when using pacman-color + colors in AUR searches

pacman-color gives some nice colours when we search for a package, but aura doesn't use that version.

Even with "alias pacman='pacman-color' ", aura still uses the normal version.
It should integrate nicely with it.

Moreover, It would be better if the colours in -As could match the one of pacman-color (for the repo's colour, and add the right colour for the version number, the package name could also be in bold as with pacman-color).

This would bring more consistancy.

--hotedit don't work

  1. User should edit PKGBUILD before aura check or building it.
  2. When user using --hotedit option. It no way to edit PKGBUILD.
Details:
  1. I was try sudo aura -Aax multiget and aura give me error cause no svn pkg. PKGBUILD need to change makedepens from out-of-date svn to subversion.

so I try again with sudo aura -Aax --hotedit multiget but aura still told me the same error.

  1. I'm curious about what exactly --hotedit did. I try install pkg that I known it's work well (eg. sudo aura -A --hotedit renameutils).

Result is aura give me an option to edit PKGBUILD but when I said yes. it no Text Editor or something like that. since I wonder how can I edit PKGBUILD, aura don't care and skip to building process.

`-Au` needs mimic `&` bash functionality

The reason an -Syu can check for AUR upgrades in packer so quickly is because it uses & to break of each curl request into its own process. I'll need to do something similar with aura to speed up -Au.

Moving haskell dependencies back to `makedeps`

I'm to be moving Aura off of haskell-curl and fully onto haskell-http. Once complete, haskell-regex-pcre will be the only AUR-only haskell dep for aura. I think that means it's time to move all the haskell deps back to the makedeps field. Many people have brought this up, and despite Aura's fast release cycle, if they don't want ghc installed all the time, I don't think (anymore) that I should force them.

@dkasak @spyhawk @Kwpolska What do you guys think?

Aura fails if package is already build

Hello,

I have a problem when using aura:
If I update a couple of AUR Packages, and something goes wrong in the later packages (so the first few have already been build, but not installed), aura will fail to install these already build packages, instead aborting with:
"""
aura >>= Building caledonia-bundle...
aura >>= Well, building caledonia-bundle failed.
aura >>= Dumping makepkg output in 3.. 2.. 1..
==> ERROR: A package has already been built. (use -f to overwrite)

aura >>= Also, the following weren’t built:
something more...
"""

I think in this case, aura should just install that package.

Thank you!

AUR update version weirdness

aura -Au

aura >>= Fetching package information...
aura >>= Comparing package versions...
aura >>= AUR Packages to upgrade:
tp_smapi-dkms : 0.6.4-2 => 0.41-7

aura -Qi tp_smapi-dkms

Nimi                    : tp_smapi-dkms
Versio                  : 0.41-7

It keeps offering that update everytime -Au is used.

Aura doesn't build (missing Haskell dependencies)

$ makepkg -s
==> Making package: aura 1.0.3.1-1 (Wed  7 Nov 19:10:12 GMT 2012)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving Sources...
  -> Downloading aura-1.0.3.1.tar.gz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   133  100   133    0     0     24      0  0:00:05  0:00:05 --:--:--   302
100 54737  100 54737    0     0   5124      0  0:00:10  0:00:10 --:--:--  473k
==> Validating source files with md5sums...
    aura-1.0.3.1.tar.gz ... Passed
==> Extracting Sources...
  -> Extracting aura-1.0.3.1.tar.gz with bsdtar
==> Removing existing pkg/ directory...
==> Starting build()...
Configuring aura-1.0.3.1...
Setup: At least the following dependencies are missing:
curl -any, json -any, regex-pcre -any
==> ERROR: A failure occurred in build().
    Aborting...
$ cabal install curl json regex-pcre
Resolving dependencies...
All the requested packages are already installed:
curl-1.3.7
json-0.7
regex-pcre-0.94.4
Use --reinstall if you want to reinstall anyway.

(Reinstalling the packages makes no difference.)

Does anybody know what I'm doing wrong?

Package file `rename` operation failing within `-A`

[kwpolska@kwpolska-lin ~]% aura -A pkgbuilder
aura >>= You have to use `sudo` for that.

Sure, will do.

[root@kwpolska-lin kwpolska]# aura -A pkgbuilder
aura >>= You have to use `sudo` for that.

WTF? I am root, I can do EVERYTHING I want on this system!

You don’t always need it, and a more generic root message would be better (some people hate sudo for some reason or don’t have it installed).

[kwpolska@kwpolska-lin ~]% time sudo aura -A pkgbuilder
aura >>= Determining dependencies...
aura >>= Main AUR packages:
pkgbuilder

aura >>= Continue? [y/n] y
aura >>= Building `pkgbuilder`...
aura: pkgbuilder-2.1.4.3-1-any.pkg.tar.xz: rename: unsupported operation (Invalid cross-device link)
sudo aura -A pkgbuilder  2.12s user 0.76s system 17% cpu 16.089 total

Broken. With everything I tried. That “determining dependencies” stage was taking ages for me before. Also, showing makepkg output may be vital to your success. A default of y for the Continue prompt may be a good idea, too.

Imgur
If my shell was dumber (that isn’t the case with bash nor zsh), my shell would be green. And I do not like that.

[kwpolska@kwpolska-lin ~]% aura -Ah
aura >>= Conflicting flags given!

How am I supposed to know how to use aura, then? Read the manpage? It isn’t as easily discoverable as a help message.

Build of dolphinviewer fails to resolve dependencies

When I build this using packer it builds and installs both dolphinviewer and lib32-pangox-compat successfully. Aura throws an error instead of building lib32-pangox-compat.

$ sudo aura -A dolphinviewer
aura >>= Determining dependencies...
aura >>= Main AUR packages:
dolphinviewer

aura >>= Continue? [Y/n]
aura >>= Building dolphinviewer...
aura >>= Well, building dolphinviewer failed.
aura >>= Dumping makepkg output in 3.. 2.. 1..
==> Making package: dolphinviewer 3.4.3.26620-1 (Mon Nov 19 11:47:15 EST 2012)
==> Checking runtime dependencies...
==> Missing Dependencies:
-> lib32-pangox-compat
==> Checking buildtime dependencies...
==> ERROR: Could not resolve all dependencies.

Aura Acts Weird with + in Package Name

I'm trying to install cavestory+ from the AUR. However, even with quotes, aura won't recognize cavestory+. It shows up in an aura AUR search (with the + lacking color), but it won't do anything with the name when I try to install, get info, or get the PKGBUILD.

Slashes in PKGBUILD depends

When there are backslashes for line breaks in the dependencies of the PKGBUILD, Aura takes them as dependencies and requires "". For example (from ruby-rspec),

depends=("ruby" \
  "ruby-rspec-core>=2.11.0" "ruby-rspec-core<2.12" \
  "ruby-rspec-expectations>=2.11.0" "ruby-rspec-expectations<2.12" \
  "ruby-rspec-mocks>=2.11.0" "ruby-rspec-mocks<2.12")

spacechem fails + ^C not done right

[kwpolska@kwpolska-lin ~]% pkgbuilder -S spacechem 
==> Building spacechem...
  -> games/spacechem 1012-2 (24 votes)
  ->     an obscenely addictive, design-based puzzle game about building machines and fighting monsters in the name of science!
==> Downloading the tarball...
  -> 1.695 kB downloaded
==> Extracting...
  -> 4 files extracted
==> Checking dependencies...
  -> sdl: found in system
  -> mono: found in system
  -> sdl_image: found in system
  -> sdl_mixer: found in system
  -> xclip: found in system
==> Making package: spacechem 1012-2 (Thu Sep 20 18:00:22 CEST 2012)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving Sources...
  -> Found spacechem.sh
  -> Found spacechem.desktop
==> Validating source files with md5sums...
    spacechem.sh ... Passed
    spacechem.desktop ... Passed
==> Extracting Sources...
==> Starting build()...
==> You need a full copy of this game in order to install it
==> Searching for spacechem_1012_amd64.tar.gz or SpaceChem-1012.tar.gz or spacechem-linux-1345144627-amd64.deb in dir: "/tmp/pkgbuilder-1000/spacechem/src"
==> ERROR: Game package not found, please type absolute path to spacechem_1012_amd64.tar.gz or SpaceChem-1012.tar.gz or spacechem-linux-1345144627-amd64.deb (/home/joe):

Now, let’s try the same with aura.

[kwpolska@kwpolska-lin ~]% sudo aura -A spacechem
aura >>= Determining dependencies...
aura >>= Main AUR packages:
spacechem

aura >>= Continue? [y/n] y
aura >>= Building `spacechem`...
aura >>= Well, building `spacechem` failed.
aura >>= Dumping makepkg output in 3.. 2.. 1..
==> You need a full copy of this game in order to install it
==> Searching for spacechem_1012_amd64.tar.gz or SpaceChem-1012.tar.gz or spacechem-linux-1345144627-amd64.deb in dir: "/var/cache/pacman/pkg/spacechem-6499/spacechem/src"
==> ERROR: Game package not found, please type absolute path to spacechem_1012_amd64.tar.gz or SpaceChem-1012.tar.gz or spacechem-linux-1345144627-amd64.deb (/home/joe):
==> ERROR: A failure occurred in build().
    Aborting...

==> Making package: spacechem 1012-2 (Thu Sep 20 18:02:57 CEST 2012)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving Sources...
  -> Found spacechem.sh
  -> Found spacechem.desktop
==> Validating source files with md5sums...
    spacechem.sh ... Passed
    spacechem.desktop ... Passed
==> Extracting Sources...
==> Starting build()...

aura >>= Some packages may have built properly.
aura >>= Would you like to install them? [y/n] 

Now, that is not right. And this is not easily discoverable. (it failed immediately when the read was done)

Now, I am aware of -Ax. It works. But then I tried to quit. I had to hit ^C three times. THREE. This is too much.

[kwpolska@kwpolska-lin ~]% sudo aura -Ax spacechem
aura >>= Determining dependencies...
aura >>= Main AUR packages:
spacechem

aura >>= Continue? [y/n] y
aura >>= Building `spacechem`...
==> Making package: spacechem 1012-2 (Thu Sep 20 18:11:28 CEST 2012)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving Sources...
  -> Found spacechem.sh
  -> Found spacechem.desktop
==> Validating source files with md5sums...
    spacechem.sh ... Passed
    spacechem.desktop ... Passed
==> Extracting Sources...
==> Starting build()...
==> You need a full copy of this game in order to install it
==> Searching for spacechem_1012_amd64.tar.gz or SpaceChem-1012.tar.gz or spacechem-linux-1345144627-amd64.deb in dir: "/var/cache/pacman/pkg/spacechem-12460/spacechem/src"
==> ERROR: Game package not found, please type absolute path to spacechem_1012_amd64.tar.gz or SpaceChem-1012.tar.gz or spacechem-linux-1345144627-amd64.deb (/home/joe):
^C
Session terminated, killing shell...
==> ERROR: TERM signal caught. Exiting...
^C ...killed.
aura >>= Well, building `spacechem` failed.
aura >>= Some packages may have built properly.
aura >>= Would you like to install them? [y/n] ^C%                                                                                                                                                                                           

(% is printed, with reversed colors, when a command ended execution without a \n. This becomes a # as root, and it represents the prompt that would normally get printed there if you used a dumber shell (bash/sh).

Also, about that “built properly” thing, it would be a good idea to show a list of those packages and ignore it altogether if empty.

color.conf parser breaks with too many final newlines

I get the following output preceding every aura command I enter:

"(color.conf)" (line 47, column 1):
unexpected end of input
expecting space, "#" or valid colour variable name

This wasn't the case with 1.0.7.0.
This doesn't have any impact on functionality, so I'm guessing it might be related to pacman-color.

PKGBUILDs diffs

New major feature.
When performing a -Au, PKGBUILDs will now be saved. When ran with a new suboption, a diff will be performed between the new PKGBUILD and the most recent one, and then outputted.

This is important because while the aura philosophy advocates thorough research into packages before initial installation, this becomes impossible (or just really long and annoying) when running a mass update with -Au.
With this new functionality, upon every update the user will be able to see what changes were made to the PKGBUILDs, and thus will notice if something is amiss.

IgnorePkg var / --ignore flag not working as expected.

Let's use a simple example.
The AUR package "packer" has an binary dependency "jshon" which depends itself on the binary package "jansson".

With "packer" in IgnoredPkg variable in pacman.conf:

sudo aura -A packer
aura >>= The following packages will be ignored:
packer

aura >>= Determining dependencies...
aura >>= Dependency checking failed for these reasons:
No AUR packages specified for install.

This works as expected :)

With jshon in IgnorePkg variable in pacman.conf:

$ sudo aura -A packer
aura >>= Determining dependencies...
aura >>= Dependency checking failed for these reasons:
`jshon` is an ignored package! See your `pacman.conf` file.

This works as expected :)

With jansson in IgnorePkg variable in pacman.conf:

sudo aura -A packer
[sudo] password for remy: 
aura >>= Determining dependencies...
aura >>= Repository dependencies:
jshon

aura >>= Main AUR packages:
packer

aura >>= Continue? [Y/n] y
resolving dependencies...
warning: ignoring package jansson-2.4-1
warning: cannot resolve "jansson", a dependency of "jshon"
:: The following package cannot be upgraded due to unresolvable dependencies:
      jshon

Do you want to skip the above package for this upgrade? [y/N]
[...]

Edit: Don't know if this is what would be expected. Aura doesn't check for the ignore dep, but pacman does the job afterward.

With an empty IgnoredPkg in pacman.conf, but using the --ignore flag:

$ sudo aura -A packer --ignore packer
aura >>= Determining dependencies...
aura >>= Main AUR packages:
packer

aura >>= Continue? [Y/n] y
aura >>= Building `packer`...
error: no targets specified (use -h for help)

The build fails, but the --ignore flag doesn't work as expected. I guess a check must be done before prompting with "Continue?", similarly to the first example above.

sudo aura -A packer --ignore jshon
aura >>= Determining dependencies...
aura >>= Repository dependencies:
jshon

aura >>= Main AUR packages:
packer

aura >>= Continue? [Y/n] y
error: no targets specified (use -h for help)
aura >>= Building `packer`...
aura >>= Well, building `packer` failed.
aura >>= Dumping makepkg output in 3.. 2.. 1..
==> Determining latest git revision...
  -> Version found: 20121205
==> ERROR: A package has already been built. (use -f to overwrite)


aura >>= Building failed.

Failed :(
Same comment as above here. The binary dep "jansson" of the binary dep "jshon" seems not taken into account here.

sudo aura -A packer --ignore jansson
aura >>= Determining dependencies...
aura >>= Repository dependencies:
jansson
jshon

aura >>= Main AUR packages:
packer

aura >>= Continue? [Y/n] y

Failed :(
Same comment as above here.

“true root” message triggered all the time

Decide.

[kwpolska@kwpolska-lin ~]% aura -Au
aura >>= You have to use `sudo` for that.
[kwpolska@kwpolska-lin ~]% sudo aura -Au
[sudo] password for root: 
aura >>= You should never build packages as the true root. Are you okay with this? [y/n] ^C%
[kwpolska@kwpolska-lin ~]% 
[kwpolska@kwpolska-lin ~]% sudo visudo
[`Defaults targetpw` disabled]
[kwpolska@kwpolska-lin ~]% sudo aura -Au
[sudo] password for kwpolska: 
aura >>= You should never build packages as the true root. Are you okay with this? [y/n] ^C%

`-Au` terribly broken and slow

Take a look at it. (the most interesting number is the the one that has **’s around it, added by yours truly.)

[kwpolska@kwpolska-lin ~]% time yes 'n' | pkgbuilder -Syu
:: Gathering data about packages...
Targets (1): libgnomecups
Proceed with installation? [Y/n] yes 'n'  0.00s user 0.00s system 0% cpu 17.912 total
pkgbuilder -Syu  0.77s user 0.43s system 6% cpu **17.911** total
[kwpolska@kwpolska-lin ~]% time yes 'n' | sudo aura -Au
aura >>= Fetching package information...
aura >>= Comparing package versions...
aura >>= Determining dependencies...
aura: Prelude.head: empty list
yes 'n'  0.00s user 0.00s system 0% cpu 7:35.78 total
sudo aura -Au  52.39s user 12.26s system 14% cpu **7:35.78** total

So, pkgbuilder -Syu took only under 18 seconds and returned one package, that is, in fact, outdated. Aura, though, wasted 7:35 minutes and did not tell me what packages are outdated.

But those 18 seconds are not the best time I can get. Right after aura -Au, I did pkgbuilder -Syu again, clocking 3.500 at the first attempt and 1.575 at the best one.

3.500
1.575
1.750

Now, looking at how aura works now, i.e. downloading a PKGBUILD and reading stuff from it¹, you won’t get as fast, because PB checks dependencies later and installs missing ones during the build process of the package wanting it rather than before it, and never reads the PKGBUILD file on its own.

¹ IIRC, you are doing this by hand rather than asking bash to do some parsing, which is not the best idea, as custom parsers often choke on bash. PKGBUILDer ran for exactly 365 days with a custom parser, and it liked to break, especially on easy stuff like an empty string in (make)depends (pyload until few releases ago) or makedepends before depends. Right now, I do it like this:

        pkgbuild = '/tmp/pkgbuilder-1000/pkgbuilder/PKGBUILD' #sample
        pb = subprocess.Popen('source ' + pkgbuild + '; for i in ${depends'
                              '[*]}; do echo $i; done; for i in '
                              '${makedepends[*]}; do echo $i; done',
                              shell=True, stdout=subprocess.PIPE)
        deps = pb.stdout.read()
        deps = deps.decode('utf-8')
        deps = deps.split('\n')

MAKEFLAGS ignored

There seems to be problem with makepkg invocation and its environment. I have MAKEFLAGS="-j2" but it is being ignored when building through aura.

Bash/zsh completion?

Does aura support bash/zsh completion? I can't find it in the docs or the manpages. I personally use zsh and I'd love to have completion enabled.

Binary Repo for Aura?

I think it's far more important for users to learn what is going on in AUR conceptually, 
and to get into a habit of checking/researching what they are installing, 
than to be forced to download a PKGBUILD manually and run "makepkg" 
(since those are rather trivial things to grasp). So I think the way forward is to think of functionality 
that will make this conceptual understanding easier and encourage it, 
rather than sacrificing convenience. 

The man has a point.

If pacman database is locked, wait for it to be avaliable

The AUR wrapper yaourt has a feature that if /var/lib/pacman/db.lck exists, it does not quit with an error, instead it waits for /var/lib/pacman/db.lck to be removed, and then continues as if nothing has happened. Sometimes I run several package builds in parallell to get it done faster, or install a package while another one is building, and adding this feature would save a lot of time in these cases.

Installing shutter crashes while determining deps

I'm currently running into the following error when trying to install shutter from AUR.

$ sudo aura -Ax shutter
[sudo] password for rwallace: 
aura >>= Determining dependencies...
aura: Prelude.head: empty list

Aura installation fails when Pacman SigLevel = PackageRequired

Installation of a package fails when trying to install when pacman's
signature trust level is set to "PackageRequired".

Specifically, makepkg successfully creates the *.tar.xz and the
*.tar.xz.sig file, but the following error occurs (irrelevant sections
elided)

==> Tidying install...
  -> Purging unwanted files...
  -> Compressing man and info pages...
  -> Stripping unneeded symbols from binaries and libraries...
==> Creating package...
  -> Generating .PKGINFO file...
  -> Adding install file...
  -> Compressing package...
==> Signing package...

You need a passphrase to unlock the secret key for
user: "Sung Pae <[email protected]>"
1024-bit DSA key, ID C8C835A2, created 2011-03-21

  -> Created signature file /var/cache/pacman/pkg/gpodder3-11488/gpodder3/gpodder3-3.3.0-2-any.pkg.tar.xz.sig.
==> Leaving fakeroot environment.
==> Finished making: gpodder3 3.3.0-2 (Thu Oct  4 21:00:18 CDT 2012)
loading packages...
error: '/var/cache/pacman/pkg/gpodder3-3.3.0-2-any.pkg.tar.xz.sig': cannot open package file

The signature file is present in /var/cache/pacman, but the actual
package is not.

Thank you for building an excellent AUR build tool.

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.