Als Rolling-Release-Distribution unterliegt Arch Linux einem stetigen Wandel. Besonders wenn Sie Pakete aus dem AUR laden, sollten Sie die Änderungen im Blick behalten.
Die Welt der Linux-Distributionen ist nur schwer zu überschauen: Die von Distrowatch [1] geführte Datenbank kennt Hunderte von Distributionen mit unterschiedlichsten Ansätzen und Spezialisierungen. Die Vielfalt täuscht allerdings ein wenig. Nicht jede Distribution erfindet das Rad neu und beginnt bei null. Die allermeisten Projekte basieren auf einer der großen Distributionen wie Debian, Slackware oder Arch Linux. So entstehen beispielsweise Ubuntu, OpenSuse oder Manjaro. Über die GNU/Linux Distribution Timeline [2] lässt sich die Entwicklungsgeschichte gut nachvollziehen.
Eines der großen Unterscheidungsmerkmale zwischen den einzelnen Distributionssträngen liegt in der Paketverwaltung: Debian und dessen Derivate nutzen das DEB-Format sowie Dpkg und Apt als Werkzeuge. Von Red Hat stammt das RPM-Format, wo Dnf die Verwaltung übernimmt. Unter Arch Linux und dessen Ablegern kommen hingegen Binärpakete im Format .pkg.tar.xz zum Einsatz; das Frontend zur Paketverwaltung nennt sich Pacman.
Open-Source-Universum
In der Regel kümmern sich die Entwickler einer Distribution um die Paketierung der Anwendungen und Bibliotheken in den Paketquellen. Die oft kleinen Teams beschränken sich dabei allerdings oft auf das Nötigste – was nicht heißt, dass die Auswahl dürftig ausfällt: Ubuntu 18.10 stellt in seinen Paketquellen über 60?000 Pakete bereit (Abbildung 1). Arch Linux beschränkt sich auf 10?000 (Abbildung 2). Die große Differenz ergibt sich aus der Art der Paketierung. Debian und Ubuntu teilen Software-Projekte gerne in deren einzelne Komponenten auf und verpacken sie auch so, wodurch sich die Zahl der Pakete massiv erhöht.

Abbildung 2: Die Paketverwaltung von Arch Linux kennt “nur” 10?580 Pakete, kombiniert aber viele Einträge.
Die Open-Source-Welt dreht sich allerdings so schnell, dass die oft kleinen Entwicklerteams kaum mit dem Verpacken von Programmen und neuen Versionen hinterherkommen. Selbst die Paketquellen von Rolling-Release-Distributionen wie Arch Linux sind nicht immer auf dem neuesten Stand und enthalten auch nicht immer jede theoretisch für Linux verfügbare Software. Schließlich geht es nicht nur darum, den Quellcode zu bauen und in Pakete zu stecken, sondern auch darum, das Ergebnis im Kontext der Distribution auf Fehler zu testen. Letztendlich soll die angebotene Software auch funktionieren und die Sicherheit und Stabilität des Systems nicht gefährden.
Ergänzt durch die Community
Um unabhängigen Entwicklern und neuen Projekten eine Tür zu den Systemen der Anwender zu öffnen und so eine möglichst einfache Installation von nicht in den Paketquellen bereitgestellten Anwendungen zu ermöglichen, bieten die großen Distributionen in der Regel eine weniger intensiv betreute “Hintertür” an. Bei Ubuntu etwa stehen Entwicklern und Anwendern die Personal Package Archives oder kurz PPAs zur Verfügung [3]. OpenSuse betreibt mit dem OpenSuse Build Service OBS [4] sogar einen Dienst, der Pakete nicht nur für die eigene Distribution erstellt, sondern auch für Fedora, Debian, Ubuntu und andere.
Arch Linux bietet seiner Community mit dem Arch User Repository oder kurz AUR [5] ebenfalls einen Weg an, die offizielle Paketverwaltung zu umgehen, wählt aber im Vergleich zu PPAs oder dem OBS einen etwas anderen Ansatz. Anstatt binärer Pakete, die nur über die Paketverwaltung auf die Festplatte kopiert werden müssen, enthält das AUR lediglich Rezepte in Form von PKGBUILD-Dateien [6]. Wie bei einem Kochrezept instruiert diese Datei dann, woher die Software stammt, wie sie sich bauen lässt, welche Abhängigkeiten es dabei zu beachten gilt, und welches “Gewürz” (ein Patch oder ein kleiner Workaround) das Gericht für Arch erst so richtig schmackhaft macht.
Listing 1 zeigt als Beispiel die PKGBUILD-Datei von Yay [7], des populärsten Programms im AUR. Die Variablen pkgname bis pkgdesc beschreiben Anwendung und Versionsnummer; arch gibt an, unter welchen Architekturen das Programm läuft. Die Variable url enthält einen Link zur Webseite des Projekts. Über depends und makedepends definiert das PKGBUILD-File die Abhängigkeiten – Letztere dürfte man nach der Installation wieder löschen, da sie nur zum Bauen der Anwendung gebraucht werden.
Listing 1
# Maintainer: Jguer <joaogg3@gmail.com>
pkgname=yay
pkgver=9.2.0
pkgrel=1
pkgdesc="Yet another yogurt. Pacman wrapper and AUR helper written in go."
arch=('i686' 'x86_64' 'armv7h' 'armv6h' 'aarch64')
url="https://github.com/Jguer/yay"
license=('GPL')
depends=(
'pacman>=5.1'
'sudo'
'git'
)
makedepends=(
'go'
)
source=("${pkgname}-${pkgver}.tar.gz::https://github.com/Jguer/yay/archive/v${pkgver}.tar.gz")
sha1sums=('760cd8667c68fbdb0dbdd838490cbaaddc48bcc3')
build() {
cd "$srcdir/$pkgname-$pkgver"
make VERSION=$pkgver DESTDIR="$pkgdir" PREFIX=/usr
}
package() {
cd "$srcdir/$pkgname-$pkgver"
make VERSION=$pkgver DESTDIR="$pkgdir" PREFIX=/usr install
}
Unter source findet sich der Link zum Quellcode oder einem bereits fertigen Binärpaket, entweder in einem anderen Paketformat (DEB, RPM) oder als statischer Build, etwa bei proprietären Anwendungen wie dem Chrome-Browser von Google. Die Prüfsumme unter sha1sums stellt sicher, dass beim Download alles mit rechten Dingen zugegangen ist (siehe Kasten “Trau, schau, wem”). In den Funktionen build() und package() stehen dann Instruktionen, wie das System das Programm bauen und installieren soll. Im Beispiel beschränken sich diese auf Make-Kommandos, wie man Sie auch beim klassischen Build-Dreischritt aus ./configure && make && make install verwenden würde.
Trau, schau, wem
AUR-Helper haben unter Arch-Enthusiasten nicht den besten Ruf. Das Arch-Wiki warnt gar vor deren Einsatz und empfiehlt, “sich mit dem manuellen Build-Prozess vertraut zu machen, um aufkommende Probleme selbst zu beheben, oder darauf vorbereitet zu sein”. Die wichtigsten Gründe vergisst das Wiki allerdings in seiner Warnung: Die Hürden, eine PKGBUILD-Datei in das AUR-Repository zu bekommen, liegen relativ niedrig. Eine Qualitätskontrolle findet nur oberflächlich statt, einzig eine Gruppe an Trusted Users [15] überwacht die Vorgänge im AUR.
Mitte letzten Jahres gelang es Angreifern, dennoch eine (wenn auch harmlose) Malware in das AUR zu schmuggeln [16]. Sie übernahmen dazu damals eine Reihe von verwaisten AUR-Einträgen – was für jeden Nutzer möglich ist – und ergänzten die Installationsroutine um eine Funktion, die eine Reihe von Daten (Datum, Zeit, CPU-ID, Pacman-Details und die Ausgaben von beispielsweise uname -a) an einen Pastebin-Dienst übermittelte. Zu den manipulierten Paketen gehörte auch der bei vielen Nutzern beliebte Acrobat Reader.
Beim Installieren oder Aktualisieren von AUR-Paketen sollten Sie als Anwender daher immer einen Blick auf die PKGBUILD-Datei werfen und kontrollieren, ob der Quellcode aus dem offiziellen Repository des Projekts geladen wird, oder ob obskure Patches und Aktionen wirklich zur Software gehören. Für Rückfragen steht Ihnen beispielsweise die Kommentarfunktion auf der AUR-Webseite oder die Mailing-Liste aur-general [17] zur Verfügung.
Do it yourself
Um nun Pakete aus dem AUR zu bauen, müssen Sie auf einem frisch installierten Arch-System das Git-Werkzeug sowie die Basis-Pakete zum Kompilieren einspielen (Listing 2, erste Zeile). Anschließend suchen Sie sich aus der AUR-Homepage unter http://aur.archlinux.org das gewünschte Paket mit dem entsprechenden Paketnamen heraus. Wie in Listing 2 gezeigt, laden Sie dann die PKGBUILD-Datei aus dem Git-Repository (Zeile 2) und lassen das Paket bauen (ab Zeile 4). Voraussetzung dafür ist jedoch, dass Sie zuvor von Hand dafür sorgen, die Abhängigkeiten zu erfüllen (im Beispiel den Go-Compiler in Form des Pakets go-pie) [8].
Listing 2
§ pacman -S git base-devel $ git clone https://aur.archlinux.org/paketname.git $ cd paketname $ makepkg # pacman -U paketname-*.pkg.tar.xz ### Alternativ die zwei letzten Aktionen in einem Schritt $ makepkg -sri
Abbildung 3 zeigt den Vorgang im Terminal von Anfang bis Ende, in Abbildung 4 sehen Sie das Ergebnis: In der Datei yay-9.2.0.tar.gz steckt der Quellcode des gerade gebauten Programms. Bei der Datei yay-9.2.0-1-x86_64.pkg.tar.xz handelt es sich um das finale Produkt, das Sie mit administrativen Rechten über das Kommando in Zeile 5 von Listing 2 installieren. Einmal eingespielt, dürfen Sie den gesamten Ordner yay/ löschen, oder Sie bewahren die pkg.tar.xz-Datei für spätere Neuinstallationen auf. Sie könnten die Datei auch auf andere Rechner übertragen oder dort das Programm einspielen, ohne es neu kompilieren zu müssen.

Abbildung 3: Mithilfe von Kochrezepten in Form von PKGBUILD-Dateien macht es Arch Linux dem Anwender leicht, Programme aus dem Quellcode zu bauen.

Abbildung 4: Die PKGBUILD-Datei des AUR-Helpers Yay sowie das finale Paket im Format einer pkg.tar.gz-Datei. Diese können Sie auch auf andere Systeme übertragen.
Auf den ersten Blick sieht das nach viel Arbeit aus. Alleine die Worte “aus dem Quellcode kompilieren” und das händische Auflösen von Abhängigkeiten dürfte einige Anwender vor Arch und dem User Repository abschrecken. Doch die meisten Arch-Nutzer vermeiden die Handarbeit, indem sie auf ein Hilfswerkzeug in Form eines sogenannten AUR-Helper zurückgreifen. Das Arch-Wiki listet eine ganze Reihe dieser Programme [9] auf. Sie haben allerdings eine bewegte Geschichte hinter sich, und nicht jeder AUR-Helfer ist zu empfehlen und vor allen Dingen noch aktuell.
Es war einmal
Wer vor ein paar Jahren zur Arch-Linux-Gemeinde stieß, der kennt mit Sicherheit den AUR-Helper Yaourt. Empfehlungen für das Programm fanden sich im Arch-Wiki, in vielen Dokumentationen und auch in Veröffentlichungen im Internet. Die Syntax von Yaourt gleicht jener des offiziellen Paketverwaltungswerkzeugs Pacman: Mit yaourt -Ss Begriff durchsucht das Programm zum Beispiel sowohl die offiziellen Paketquellen als auch das AUR; mit yaourt -S Paket erfolgt die Installation. Auf diese Art und Weise hat sich Yaourt als einfacher Ersatz für die Paketverwaltung etabliert.
Als AUR-Helper kümmert sich Yaourt nicht nur um den Build-Vorgang, sondern vor allen Dingen auch um das Auflösen der Abhängigkeiten. Das erleichtert insbesondere das Einrichten größerer Programme, die weitere Pakete aus dem AUR nach sich ziehen – speziell dann, wenn Abhängigkeiten weitere Abhängigkeiten benötigen. So lassen sich dann auch große Brocken mit nur einem kurzen Kommando aus dem AUR ins System einspielen.
Inzwischen ist das Programm allerdings deutlich in die Jahre gekommen. Der Entwickler selbst empfiehlt, das Projekt auf dem Dachboden in Rente zu schicken [10]. Es gibt seit Jahren schon keine wirklichen Updates mehr, die Seite im Arch-Wiki zu den AUR-Helpern listet Yaourt nicht mehr auf. Zwischendurch wurde das Programm sogar selbst aus dem AUR genommen, nach kurzer Zeit jedoch wieder eingefügt. Schon alleine deshalb sollten Arch-Nutzer zu moderneren Alternativen greifen.
Nachfolger Pacaur
Pacaur [11] galt bereits vor dem stotternden Ende von Yaourt als die bessere Alternative. Sein Vorteil liegt darin, alle die Installation betreffenden Abfragen in einem Rutsch zu stellen und erst dann, ohne weitere Zwischenstopps, die Pakete zu bauen und einzuspielen (Abbildung 5). Das erleichtert besonders bei vielen anstehenden Updates aus dem AUR oder bei der Installation größerer Anwendungen mit vielen Abhängigkeiten die Arbeit.

Abbildung 5: Der AUR-Helper Pacaur galt als verwaist, wurde aber wiederbelebt. Die Stärke des Programms liegt weiterhin im Ablauf: Das Werkzeug stellt alle zu beantwortenden Fragen vor dem (oft zeitaufwendigen) Build-Prozess.
Wie so manches ambitionierte Open-Source-Projekt trudelte allerdings auch Pacaur in eine Krise. Schon 2017 erklärte der Hauptentwickler Spyhawk, dass der Code einen massiven Umbau benötige und dass die Arbeit an dem Programm für ihn einen inzwischen ungeliebten und vor allem auch unbezahlten Job darstelle. Als Konsequenz zog er die Notbremse und stellte weitere Entwicklungen am Programm ein [12]. Wie schon Yaourt verschwand Pacaur auf Antrag des Entwicklers auch aus dem AUR.
Inzwischen steckt allerdings wieder frisches Leben im Projekt. Mit dem neuen Hauptentwickler E5ten am Steuer trudeln seit Anfang 2019 wieder regelmäßig Commits im (geforkten) Github-Repository der Anwendung ein. Auch das Arch-Wiki führt Pacaur nicht mehr als hoffnungslosen, weil aufgegebenen, Fall. Im Gegenteil: Bei allen wichtigen Kriterien signalisiert ein grün hinterlegtes Yes, dass Pacaur wieder auf der Höhe der Zeit angekommen ist.
Der Neue: Yay
So schließt sich der Kreis zum bereits in der Einleitung des Artikels angesprochenen Programm Yay. Der AUR-Helper gilt in der Community aktuell als sehr zuverlässig und gut gewartet. Zudem erfüllt das Programm alle Anforderungen an einen modernen AUR-Helfer (Abbildung 6). So stellt Yay zum Beispiel vor dem Build-Prozess alle relevanten Fragen, bietet eine Möglichkeit die PKGBUILD-Datei zu bearbeiten, und löscht bei Bedarf nach Abschluss automatisch alle Pakete, die nur zum Bauen der Anwendung gedient haben. Als Pacman-Wrapper bindet Yay zudem Pacman selbst mit ein, sodass der Aufruf von yay -Syu (oder noch einfacher yay) das komplette Arch-System auf den aktuellen Stand bringt.

Abbildung 6: Ebenso wie Pacaur stellt der AUR-Helfer Yay sämtliche Fragen vor dem Kompilieren. Besonders Programme mit vielen Abhängigkeiten, die wiederum aus dem AUR zu installieren sind, lassen sich so im Handumdrehen bauen.
Einzig der Einsatz der Programmiersprache Go mag sich auf Systemen mit knapp bemessenem Festplattenplatz als Nachteil erweisen. Die Sprache belegt knapp 500 MByte auf dem Massenspeicher und wird von nur wenigen anderen Programmen benötigt. Bei Platzproblemen hilft als Workaround, nach dem Build das Paket go wieder zu deinstallieren – bei einem Update von Yay müssen Sie es dann allerdings wieder neu aus dem Netz laden.
Grafischer AUR-Helper
Um dem Anwender eine benutzerfreundliche Lösung für die Paketverwaltung an die Hand zu geben, entwickelt das Arch-Derivat Manjaro in eigener Regie mit Pamac [13] einen grafischen Pacman-Aufsatz, der auch das AUR integriert. Manjaro spielt Pamac von Haus aus während der Installation mit auf die Festplatte, unter Arch Linux installieren Sie das Programm über das gleichnamige PKGBUILD aus dem AUR. In beiden Fällen müssen Sie die AUR-Unterstützung in der Anwendung noch in den Einstellungen aktivieren. Eine auffällige Warnung weist dabei auf die potenziellen Gefahren des AUR hin (Abbildung 7).

Abbildung 7: Der im Rahmen des Arch-Derivats Manjaro entwickelte Paketmanager Pamac dient als Frontend für Pacman. In den Einstellungen lässt sich das AUR als zusätzliche Paketquelle aktivieren.
Pamac zeigt danach in der Seitenleiste mit Repositories und AUR zum Suchbegriff passende Treffer aus den jeweiligen Quellen an. Zu installierende AUR-Pakete wählen Sie über Kontrollkästchen in der Spalte Status an und starten mit einem Klick auf Übernehmen am unteren Rand der Anwendung deren Einrichtung (Abbildung 8). Pamac zeigt daraufhin die zu installierenden Pakete samt Quelle an. Etwas versteckt in der Kopfleiste findet sich mit Build-Dateien bearbeiten die Möglichkeit, die PKGBUILD-Dateien einzusehen und bei Bedarf anzupassen.

Abbildung 8: Pamac informiert Sie bei der Installation darüber, woher ein Paket stammt. Achten Sie darauf, über einen Klick auf den Schalter Build-Dateien bearbeiten in der Fensterleiste die PKGBUILD-Dateien zu überprüfen.
Fazit
Das Geschehen rund um die AUR-Helper demonstriert den Charakter von Arch Linux als Rolling-Release-Distribution, die sich stetig verändert. Anwender, die sich nur wenig informieren, nutzen wahrscheinlich noch heute Yaourt, obwohl das Programm seit Jahren als veraltet und verwaist gilt. Da es sich beim AUR zudem nicht um einen offiziellen Bestandteil der Distribution handelt, gibt es von offizieller Seite – etwa über die Arch Linux News [14] – keine Informationen zu Änderungen oder gar Gefahren. Als Anwender müssen Sie also selbst die Augen offenhalten.
Benötigen Sie nur wenige Anwendungen aus dem AUR, bauen Sie die Pakete am besten von Hand. Sind erst einmal alle Abhängigkeiten erfüllt, beschränkt sich der Build-Prozess auf zwei Kommandos. Verwenden Sie einen AUR-Helper, sollten Sie grundsätzlich die PKGBUILD-Datei kontrollieren: Nur so vermeiden Sie böse Überraschungen und behalten die Kontrolle über das System.
Infos
-
Distrowatch: https://distrowatch.com
-
Distri-Timeline: https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg
-
OpenSuse Build Service: https://build.opensuse.org
-
PKGBUILD-Format: https://wiki.archlinux.org/index.php/PKGBUILD
-
Yay im AUR: https://aur.archlinux.org/packages/yay
-
Pakete aus dem AUR installieren: https://wiki.archlinux.de/title/Arch_User_Repository
-
AUR-Helper im Arch-Wiki: https://wiki.archlinux.org/index.php/AUR_helpers
-
“Maybe it’s time for yaourt to retire to the attic”: https://github.com/archlinuxfr/yaourt/issues/382#issuecomment-437461631
-
Git-Repo zu Pacaur: https://github.com/E5ten/pacaur
-
“As such, this project (Pacaur) is now unmaintained”: https://bbs.archlinux.org/viewtopic.php?pid=1755144#p1755144
-
Arch-Linux-News: https://www.archlinux.org/news
-
AUR Trusted Users: https://wiki.archlinux.org/index.php/AUR_Trusted_User_Guidelines
-
Schadcode im AUR: https://www.linux-community.de/nachrichten/drei-pakete-mit-malware-aus-dem-arch-user-repository-entfernt
-
Mailing-Liste aur-general: https://lists.archlinux.org/listinfo/aur-general






