Die Linux-Distribution Void pflegt mit XBPS ein eigenes Paketmanagementsystem. Es arbeitet rasend schnell und erlaubt den Bau eigener Pakete.
Paketverwaltungen bilden das Herzstück aller Linux-Distributionen. Die Paketverwaltung regelt bei der Installation von Software die Verteilung der Komponenten des Pakets in die Verzeichnisstruktur des Filesystem Hierarchy Standard (FHS) [1], den fast alle Distributionen seit 1993 verwenden.
In den Aufgabenbereich einer Paketverwaltung fallen neben der Installation der eigentlichen Anwendungspakete meist auch das Nachziehen der benötigten Abhängigkeiten sowie das Aktualisieren und Entfernen von Paketen. Zudem lässt sich der Paketbestand nach verschiedenen Kriterien durchsuchen.
Die am häufigsten anzutreffenden Paketverwaltungssysteme unter Linux bedienen die Formate DEB und RPM. Daneben gibt es neben Exoten wie Nix unter anderem Pacman bei Arch Linux, Portage bei Gentoo, Eopkg bei Solus oder XBPS bei Void. Mit Letzterem beschäftigt sich dieser Artikel.
XBPS
XBPS steht für X Binary Package System und entstand ursprünglich als Ersatz für Pkgsrc [2] bei NetBSD. Im Laufe der Zeit entwickelte sich aus diesem Vorhaben die Rolling-Release-Distribution Void, über die wir in LU 11/2017 bereits berichteten [3]. Man darf XBPS also mit Fug und Recht als Herzstück dieser Distribution bezeichnen.
Die von XBPS verwalteten Pakete tragen die Endung .xbps. Aus technischer Sicht handelt es sich wie bei Debian-Paketen um mit Xz gepackte TAR-Archive. Die Basis von XBPS bilden die Repositories. Das System unterstützt neben lokal gespeicherten Repos auch via HTTP(S) oder FTP angebundene Paketquellen von entfernten Servern.
Die System-Repositories finden sich unter /usr/share/xbps.d/, von Anwendern hinzugefügte unter /etc/xbps.d. Die Inhalte der offiziellen Paketquellen sind mit RSA signiert, die enthaltenen Metadaten, Dateien und Binärpakete mit SHA256 gehashed. Subrepositories für Non-Free-Pakete oder Multi-Arch-Umgebungen lassen sich ebenfalls einbinden.
XBPS und Void
Void verwaltet nicht nur Repositories, deren Pakete die C-Standard-Bibliothek Glibc verwenden, sondern unterstützt in separaten Repositories auch die Alternative Musl [4]. XBPS beherrscht neben dem Paketmanagement aber noch mehr: Es stellt gleichzeitig auch das Buildsystem, mit dem die Void-Entwickler alle Pakete der Distribution bauen.
Derzeit liegt der von XBPS verwaltete Paketbestand in Void für die x86-Plattform bei über 8250 Paketen, die ARM-Varianten bieten jeweils über 5000 Pakete an. Um Zugriff auf den Bestand zu bekommen, müssen Sie zunächst die Quellen aktualisieren. Im Zuge dieses Updates bringen Sie per xbps-install -Su auch gleich den Paketbestand auf den neuesten Stand (Abbildung 1).

Abbildung 1: Als erste Amtshandlungen stehen das Update der Quellen sowie das Aktualisieren des Paketbestands an.
Blitzschnell unterwegs
Als Paketmanager legt XBPS Wert auf Einfachheit und Geschwindigkeit. Letzteres zeigt sich umgehend, wenn man XBPS mit dem nicht gerade langsamen Debian-Paketsystem vergleicht. XBPS geht etwa bei der Suche (Abbildung 2) und der Installation (Abbildung 3) von Paketen extrem flott zu Werke.

Abbildung 2: Die Suche nach Paketen leiten Sie mit xbps-query Paket ein. Wie schon bei der Installation geht XBPS rasend schnell zu Werke.

Abbildung 3: Für die Installation des E-Mail-Clients Thunderbird aus den Paketquellen benötigte XBPS weniger als 10 Sekunden.
Zudem beherrscht XBPS ein paar nützliche Funktionen, die den großen Paketmanagern meist fehlen. So unterstützt XBPS beispielsweise Package Reverts: Damit können die Entwickler, falls einmal ein Fehler unbemerkt zu den Anwendern gelangt, ein Paket-Downgrade verteilen und damit das defekte Paket ersetzen. Zudem lässt sich per xbps-pkgdb Paket ein Paket auf Fehler überprüfen.
Ein paar nette Tricks
Zudem bietet XBPS die Option, Pakete mitsamt der anderweitig nicht benötigten Abhängigkeiten zu entfernen. Dazu dient der Befehl xbps-remove -R Paket. Lässt man das -R weg, löscht XBPS nur das referenzierte Paket.
Das in XBPS integrierte Buildsystem erlaubt zudem Unit-Tests mithilfe von Travis CI [5] auszuführen und so die Integrität und Konsistenz der Repositories zu überprüfen.
Einen Überblick über die gebräuchlichsten Befehle von XBPS und deren Entsprechungen bei Debian vermittelt die Tabelle “Befehlsreferenz”.
|
|
XBPS |
Debian |
|---|---|---|
|
Quellen aktualisieren |
|
|
|
System aktualisieren |
|
|
|
Paket installieren |
|
|
|
Paket entfernen |
|
|
|
Paket samt Abhängigkeiten entfernen |
|
– |
|
Paket samt Konfiguration entfernen |
– |
|
|
Bestandteile eines Pakets auflisten |
|
|
|
Pakete suchen |
|
|
Pakete erstellen mit Xbps-src
Wie bereits erwähnt, ermöglicht Void Linux Ihnen über Xbps-src, Programme selbst aus dem Quellcode nach vordefinierten Rezepten zu bauen. Die Vorlagen lassen sich dabei an die persönlichen Vorstellungen anpassen. Das Wiki bietet dazu eine Schnellanleitung [6], auf Github findet sich eine technisch detaillierte Beschreibung [7].
Um es vereinfacht zu skizzieren, lädt Xbps-src zunächst von Github das Repository Void-Packages (Abbildung 4) mit den Paketvorlagen lokal auf den Rechner. Dann erstellt das System eine Bootstrap-Umgebung sowie eine Chroot, in der es die Pakete baut.

Abbildung 4: Um selbst Pakete zu bauen, müssen Sie zunächst ein Github-Repository ins Home-Verzeichnis klonen.
Anwender dürfen aber nicht nur Pakete nach den Void-Rezepten selbst bauen, sondern auch neue Vorlagen für Pakete erstellen. Nach eigenen Vorlagen selbst erstellte Pakete lassen sich dann über einen Pull-Request für das offizielle Repository bereitstellen.
Allerdings herrscht bei Void eine um einiges strengere Qualitätskontrolle als etwa für das – vom Prinzip her vergleichbare – AUR bei Arch Linux. Der Grund dafür liegt unter anderem darin, dass akzeptierte Pakete offiziell zur Distribution gehören.
Zum Bauen der Pakete benötigen Sie keine Root-Rechte, da der ganze Build-Prozess in einer Chroot abläuft. Auch Cross-Compiling, also das Erstellen für eine andere Architektur als der zum Bauen verwendeten, stellt kein Problem dar.
Fazit
XBPS stellt eine umfassende Paketverwaltung dar, die nicht nur das Einrichten, Aktualisieren und Entfernen von Paketen beherrscht, sondern auch alle Pakete der Distribution erstellt. Für Anwender bietet XBPS die Möglichkeit, Vorlagen für eigene Pakete zu erstellen und diese zu bauen. Die daraus resultierenden Pakete eignen sich für den Einsatz auf den eigenen Rechnern, lassen sich aber auch den Entwicklern zum Einbinden in die offiziellen Repositories vorschlagen.
XBPS arbeitet schnell, der Unterschied zu anderen Paketverwaltungen ist nicht zu übersehen. Die Installation von Paketen dauert oft nur einen Wimpernschlag. XBPS bietet zudem Funktionen, von denen sich andere Paketmanager eine Scheibe abschneiden könnten. Die umfangreiche Dokumentation erklärt alle Funktionen [8]. Eine sehr ausführliche Dokumentation von XBPS in deutscher Sprache [9] hilft bei der Erforschung des Paketmanagers weiter, falls die Englisch-Kenntnisse zum Studium der Originaldokumentation nicht ausreichen.
Wer ein blitzschnelles Linux sucht, das auch auf älteren Rechnern flott unterwegs ist, Run-it anstatt Systemd verwendet und neben XBPS noch weitere innovative Ansätze bietet, der sollte sich Void Linux genau ansehen.
Infos
-
FHS: https://de.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
-
Distribution für ältere Hardware: Ferdinand Thommes, “Nicht von der Stange”, LU 11/2017, S. 8, https://www.linux-community.de/39688
-
Travis CI: https://de.wikipedia.org/wiki/Travis_CI
-
Xbps-src (kurz): https://wiki.voidlinux.eu/Xbps-src
-
Xbps-src (detailliert): https://github.com/voidlinux/void-packages/blob/master/README.md
-
Offizielle Doku: https://wiki.voidlinux.eu/XBPS
-
Deutsche Doku: http://www.strcat.de/eigenes/xbps.html





