Mit dem Update auf Pacman 6.0 beschleunigt Arch Linux nicht nur den Download von Paketen, sondern stellt auch die Weichen für die Zukunft der Distribution.
Worin unterscheiden sich die gängigen Distributionen eigentlich? Klar, einige verwenden Gnome als Desktop-Umgebung, andere setzen auf KDE oder einen leichtgewichtigen XFCE-Desktop. Individuelle Themes für Schalter und Icons sowie Wallpaper schaffen einen typischen Wiedererkennungswert.
Unter der Haube tickt jedoch immer ein Linux-Kernel mit einigen wenigen wichtigen Basis-Bausteinen. Alsa und Pulseaudio für den Sound, Systemd für das Starten und Stoppen von Diensten oder Cups zum Drucken. Kein Distributor will das Rad immer wieder neu erfinden, stattdessen greifen die Entwickler in den Baukasten und holen sich bewährte Werkzeuge.
Der größte Unterschied liegt im jeweils genutzten Paketmanagementsystem. Anhand dessen lassen sich gut Distributionsfamilien ausmachen: Der Debian Package Manager und die darauf aufbauenden Tools wie Apt kommen nicht nur beim Namensgeber zum Einsatz, sondern auch bei Ubuntu oder Linux Mint. Das Format des RPM Package Manager nutzt nicht nur Red Hat bei seinen professionellen Plattformen, sondern auch Fedora oder OpenSuse.
Aus diesem Grund ist es durchaus eine wichtige Nachricht, dass Arch Linux seine Pacman-Paketverwaltung nach knapp fünf Jahren Entwicklungsarbeit auf eine neue Major-Version hebt. Pacman 6.0.0 soll nun schneller arbeiten, Fehler besser tolerieren und einfacher zu bedienen sein [1]. Wir schauen die Neuerungen der jüngsten Version an und gehen ein wenig auf die Besonderheiten ein.
Keep it simple, stupid
Entsprechend des KISS-Prinzips von Arch Linux [2] verzichtet das System auf einen grafischen Paketmanager. Die Installation, das Entfernen oder das Update von Paketen erledigen Sie unter Arch mit dem Kommandozeilentool Pacman. Der vom Arch-Derivat Manjaro entwickelte grafische Aufsatz Pamac oder auf PackageKit aufbauende Werkzeuge und somit plattformübergreifend funktionierende Programme wie das Gnome Software Center stehen aber auch unter Arch Linux bereit.
Am schnellsten erledigen Sie alltägliche Aufgaben jedoch über das Terminal. Mit pacman -Syu bringen Sie das komplette System auf den neuesten Stand, mit pacman -Ss Suchbegriffe durchsuchen Sie die Repositories und mit pacman -S Paketnamen spielen Sie einen oder mehrere der Treffer ein. Entsprechend entfernt pacman -Rss Paketname das Paket eines nicht mehr benötigten Programms mitsamt deren Abhängigkeiten aus dem System. Ein Artikel aus LU 09/2015 [3] geht umfassend auf die Syntax ein.
Eine wichtige Neuerung von Pacman 6.0 liegt in der Möglichkeit mehrere Pakete gleichzeitig zu übertragen oder mehrere Paketquellen gleichzeitig abzugleichen. Dies beschleunigt Updates, da der Transfer einer Vielzahl kleiner Dateien bei gleichem Datenvolumen deutlich mehr Zeit in Anspruch nimmt als das Übertragen einer einzigen großen Datei.
Mehr Durchsatz, mehr Farbe
Bei Nutzern mit einem frisch installiertem Arch Linux ist diese Funktion automatisch aktiviert, obwohl Sie bislang noch nichts an der für Pacman wichtigen Konfigurationsdatei /etc/pacman.conf geändert haben. Auf bestehenden Systemen sollten Sie hingegen nach der von der Paketverwaltung erstellten Datei /etc/pacman.conf.pacnew suchen und die Neuerungen in die /etc/pacman.conf übertragen. Relevant ist hier die Option ParallelDownloads. Der Wert dahinter bestimmt die Anzahl der simultan geöffneten Verbindungen (Listing 1).
Listing 1
/etc/pacman.conf
[...] # Misc options #UseSyslog Color #NoProgressBar CheckSpace #VerbosePkgLists ParallelDownloads = 5 ILoveCandy [...]
Wenn Sie schon dabei sind, aktivieren Sie die Option Color und fügen die Zeile ILoveCandy zur Konfiguration hinzu. Die Option Color färbt die Ausgabe ein und sorgt so für mehr Übersicht. In Pacman 6.0 sind nun die Versionsnummern hinter den Paketnamen grau eingefärbt. ILoveCandy gehört einfach aktiviert: Der Schalter verwandelt den Fortschrittsbalken in einen kleinen Pacman, der während des Transfers – wie vom Spiel bekannt – die vor ihm liegenden Pillen futtert (Abbildung 1).

Abbildung 1: Pacman lädt in der Version 6.0 in einem Zug gleich mehrere Pakete gleichzeitig aus den Repositories.
Robuster gegen Fehler
Arch Linux betreibt nicht nur einen Server mit seinen Paketquellen, sondern organisiert gleich ein ganzes Heer an sogenannten Mirror-Servern. Also zusätzliche Rechner in aller Welt, die den Inhalt der offiziellen Paketquellen spiegeln [4]. Dies verteilt die Last auf mehrere Schultern und optimiert die Übertragungsgeschwindigkeiten: Nutzer in Deutschland sollten daher Spiegelserver mit einem Standort in Deutschland verwenden (siehe Kasten “Optimierte Liste”).
Optimierte Liste
Arch organisiert die von Pacman abgefragten Spiegelserver über die Konfigurationsdatei /etc/pacman.d/mirrorlist. Eine nach Ländern sortierte Mirrorliste lässt sich leicht über den Pacman Mirrorlist Generator [9] erstellen. Achten Sie dabei darauf, lediglich https als Protokoll zu verwenden und die Liste nach dem Mirror Status zu sortieren.
Die so erzeugte Liste übertragen Sie nach /etc/pacman.d/mirrorlist und aktivieren nach Gusto die gewünschten Server, indem Sie die Raute # vor dem entsprechenden Eintrag entfernen. Es empfiehlt sich, Server größerer Universitäten oder Organisationen zu nutzen. Pacman fragt die Server in der eingetragenen Reihenfolge von oben nach unten an.
Alternativ optimieren Sie die Liste automatisch: Dazu installieren Sie das Paket reflector aus den Paketquellen und führen das Kommando in Listing 2 aus. Es filtert aus der Liste aller Mirrors die in Deutschland stehenden Server heraus und integriert zudem die weltweit genutzten Spiegel (deshalb das Komma in String --country 'Germany,'). Danach optimiert es die Liste nach dem “Mirror Score” (errechnet aus der Aktualität der Daten und der Verfügbarkeit) und ersetzt die alte Liste.
Listing 2
Mirrorliste optimieren
sudo pacman -S reflector sudo reflector --country 'Germany,' --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
Die verteilte Organisation über zahlreiche, auf der Welt verteilte Server bringt jedoch das Problem mit sich, dass ab und an Rechner ausfallen oder sich nicht ordentlich synchronisieren. Als Nutzer stehen Sie dann vor dem Problem, dass die Installation oder das Update von Paketen nicht gelingt. Bisher brach Pacman seine Arbeit ab, sobald der erste Eintrag in der Liste keine Antwort lieferte.
Wer nicht warten wollte, bis der Mirror wieder am Netz hängt, musste die Liste entweder neu erstellen oder von Hand den betroffenen Server auskommentieren. Pacman 6.0 hingegen springt nun automatisch zum nächsten Server, falls der oder die ersten Einträge nicht funktionieren sollten (Abbildung 2). Ist der bevorzugte Mirror also nur vorübergehend außer Betrieb, brauchen Sie die Liste nicht zu verändern.
Flexible Architekturen
Das Thema Rechnerarchitektur war lange nicht mehr auf der Tagesordnung. Seitdem die meisten Distributionen keine 32-Bit-Version mehr anbieten, stellt sich dem Nutzer die Frage “Soll ich ein Linux mit 32 oder 64 Bit verwenden” gar nicht mehr. Für den PC gibt es üblicherweise nur eine Variante für amd64 beziehungsweise x86-64, dazu finden sich im Download-Bereich meist Versionen für spezielle Geräte wie zum Beispiel solche mit ARM-Prozessoren wie etwa den Raspberry Pi.
Das Rad bleibt allerdings nicht stehen. Eine 64-Bit-CPU von heute kennt deutlich mehr Funktionen und arbeitet mit einem wesentlich größeren Befehlssatz als die ersten Athlon 64 von AMD oder Intels Xeon- und Pentium-4-Chips. Je nach Umfang des Befehlssatzes unterscheidet man daher zwischen der ursprünglichen Architektur x86-64 und den Überarbeitungen x86-64-v2 (dazu gehört Intels Nehalem-Mikroarchitektur), x86-64-v3 (Haswell) und x86-64-v4 (Skylake-AVX512).
Wer prüfen möchte, welche Befehlssätze die im Computer verbaute CPU unterstützt, muss die Ausgabe von lscpu | grep Markierungen mit der Dokumentation des x86-64 psABI (kurz für “Processor Specific Application Binary Interface”) von Hand vergleichen [5]. Einfacher geht es mit dem Skript testcpu.sh aus Listing 3. Im Terminal ausgeführt, zeigt es die von der im Computer verbauten CPU unterstützten Versionen der x86-64-Architektur an (Abbildung 3).
Listing 3
testcpu.sh
#!/bin/sh -eu
# Quelle: https://unix.stackexchange.com/questions/631217/how-do-i-check-if-my-cpu-supports-x86-64-v2
flags=$(cat /proc/cpuinfo | grep flags | head -n 1 | cut -d: -f2)
supports_v2='awk "/cx16/&&/lahf/&&/popcnt/&&/sse4_1/&&/sse4_2/&&/ssse3/ {found=1} END {exit !found}"'
supports_v3='awk "/avx/&&/avx2/&&/bmi1/&&/bmi2/&&/f16c/&&/fma/&&/abm/&&/movbe/&&/xsave/ {found=1} END {exit !found}"'
supports_v4='awk "/avx512f/&&/avx512bw/&&/avx512cd/&&/avx512dq/&&/avx512vl/ {found=1} END {exit !found}"'
echo "$flags" | eval $supports_v2 || exit 2 && echo "CPU supports x86-64-v2"
echo "$flags" | eval $supports_v3 || exit 3 && echo "CPU supports x86-64-v3"
echo "$flags" | eval $supports_v4 || exit 4 && echo "CPU supports x86-64-v4"

Abbildung 3: Das Skript testcpu.sh ermittelt zu welcher 64-Bit-Generation die im Rechner verbaute CPU gehört.
Arch Linux – wie die meisten anderen Distributionen – baut praktisch alle Pakete entweder unabhängig von der Architektur (etwa bei Programmen, die Skript- oder Interpreter-Sprachen nutzen) oder eben für x86-64, den Mindeststandard (Listing 4). Aufgrund der Abwärtskompatibilität läuft das System daher auf allen 64-Bit-Systemen, egal welcher Generation. Es gibt keine zusätzlichen Paketquellen für die unterschiedlichen CPU-Generationen.
Listing 4
Übersicht aller installierten Pakete
$ pacman -Si | grep -P 'Architektur\s+:' | sort | uniq -c
4190 Architektur : any
7747 Architektur : x86_64
Bei Gentoo, das bei der Installation eines Pakets den Quellcode nutzt und die Software so immer auf dem Rechner des Nutzers baut, lässt sich hingegen über die CPU-Flags die vom Compiler genutzte Architektur explizit angeben [6]. So entsteht ein komplett auf die Architektur des eingesetzten Rechners optimiertes System, vom Kernel bis zur letzten Bibliothek. Andere Distributionen wie etwa Intels Clear Linux hingegen schneiden den Zopf bei der Haswell-Generation ab und unterstützen nur noch x86_64-v3 [7].
Mit Pacman 6.0 stellt Arch Linux nun die Weichen, um in Zukunft unterschiedliche CPU-Architekturen zu verwalten. Die Konfiguration erfolgt über die Zeile Architecture = auto in pacman.conf. Das Portieren des Systems auf x86_64-v3 ist bereits im Gespräch [8]. Dadurch könnten optimierte Pakete nach und nach für einen Leistungsschub sorgen und durch die Unterstützung aktueller Stromsparmechanismen auch die Akkulaufzeit auf Laptops verlängern. (cla)
Infos
-
Changelog zu Pacman: https://git.archlinux.org/pacman.git/tree/NEWS
-
KISS-Prinzip: https://wiki.archlinux.de/title/KISS-Prinzip
-
Pacman und AUR: Christoph Langner, “Guten Appetit”, LU 09/2015, S. 20, https://www.linux-community.de/35328
-
Übersicht aller Arch Linux Mirror: https://archlinux.org/mirrors/status/
-
Untergliederung der Prozessor Architekturen: https://gitlab.com/x86-psABIs/x86-64-ABI/-/blob/master/x86-64-ABI/low-level-sys-info.tex
-
CPU Flags unter Gentoo setzen: https://wiki.gentoo.org/wiki/Safe_CFLAGS
-
Clear Linux OS: Ferdinand Thommes, “Klare Sache”, LU 07/2019, S. 36, https://www.linux-community.de/42153
-
“Provide a x86_64_v3 microarchitecture level port”: https://gitlab.archlinux.org/archlinux/rfcs/-/merge_requests/2/diffs
-
Pacman Mirrorlist Generator: https://archlinux.org/mirrorlist/






