In diesem Tutorial werde ich näher auf das von Void Linux Paketverwaltungssystem namens xbps und den dazugehörendem Tools eingehen. Ein Teil der Informationen in diesem Tutorial sind aus dem Wiki von void Linux. Ich werde nicht auf jede Option eingehen, denn ich setze voraus das man weiß was z. B. die Optionen --verbose, --version oder --help' bedeuten. Es wird auch keine Erklärung geben wie man eine Option und ein Argument angibt.
Sollten sich Fehler eingeschlichen haben oder Fragen vorhanden sein, dann schickt schickt mit einfach eine Mail (strcat@gmx.net
[Meinen public key kann man unter http://strcat.de/contact.html einsehen (47E322CE)]
).

Was ist XBPS?

XBPS ist ein freies Paketverwaltungssystem, das unter der BSD-Lizenz veröffentlicht wurde und kann Binärpakete aus dem Quellcode compilieren und installieren, aber auch aus dem Repositorium herunterladen. Es besteht auch die Möglichkeit der Cross-Compilierung und derzeit sind ~7000 vorkompilierte Pakete verfügbar. Der Quelltext von XBPS ist kompatibel mit dem POSIX/SUSv2/C99 Standards

Features

Hier zitiere ich mal Wikipedia

  • Es werden mehrere Projektarchive, lokale als auch entfernte (via HTTP/HTTPS/FTP) unterstützt.

  • Die entfernten Projektarchive sind mit RSA signiert.

  • Die Paketmetadaten und die Dateien der Binärpakete sind mit SHA256 gehasht.

  • Es werden die Paketzustände (ähnlich wie bei ) verwendet, um bei der Installation oder der Aktualisierung die Gefahr von defekten Paketen zu mindern.

  • Es besteht die Möglichkeit, nicht vollständige Installationen oder Aktualisierungen fortzuführen;

  • die Möglichkeit, nur die Dateien zu entpacken, die in dem Paket aktualisiert wurden;

  • die Möglichkeit, Metapakete zu verwenden;

  • die Möglichkeit zu testen, ob es zu Inkompatibilitäten von gemeinsam genutzten Bibliotheken kommt.;

  • die Möglichkeit, Pakete zu ersetzen;

  • die Möglichkeit, Pakete von der Aktualisierung auszuschließen;

  • die Möglichkeit, Konfigurationsdateien zu erhalten/zu aktualisieren;

  • die Möglichkeit, Pakete erneut zu installieren;

  • die Möglichkeit, Pakete mit einer niedrigeren Versionsnummer zu installieren;

  • die Möglichkeit, Skripte vor und nach Installation, Entfernung oder Aktualisierung auszuführen;

  • die Möglichkeit, die Pakete auf ihren Zustand, fehlende Dateien, Hashes, fehlende oder unaufgelöste Abhängigkeiten, freihängende oder geänderte symbolische Links u. Ä. zu untersuchen.

Die Programme des xbps-Paketmanagers sind auch die Basis für das Buildsystem. Dabei werden sogenannte Vorlagen in einem git-Projektarchiv definiert, so dass sich daraus die Binärpakete, auch für andere Rechnerarchitekturen als die installierte, erstellen lassen. Die Binärpakete mit der Endung .xbps sind ähnlich wie .deb-Pakete gepackte tar-Archive. Standardmäßig wird xz als Packprogramm verwendet, Alternativen sind aber möglich. Die Metadaten werden als plist für die zu installierenden Dateien in files.plist und für das Paket als props.plist gehalten.

Grundlegende Anwendung

Um ein einzelnes oder gleich mehrere Pakete incl. deren Abhängigkeiten zu installieren, reicht folgendes Kommando

# xbps-install -S paket1 paket2 paket..

Pakete werden wie folgt gesucht:

# xbps-query -Rs paketname

Um ein Paket ohne dessen Abhängigkeiten zu deinstallieren, gibt man folgendes ein

# xbps-remove paket

Will man auch dessen Abhängigkeiten deinstallieren, erreicht man das hiermit:

# xbps-remove -R paket

Um die Paketdatenbank zu aktuallisieren und alle installierten Pakete incl. deren Abhängigkeiten upzudaten:

# xbps-install -Su

Auf die einzelnen Programme und deren Optionen gehe ich im Abschnitt Tools ein.

Repositories

Die sog. Repositories
[Repositories werde ich mit Repos abkürzen]
sind der grundlegende Bestandteil von XBPS; die Repos können entweder lokal oder entfernt vorhanden sein.

lokal

In einem lokalem Verzeichnis verfügbar, wie z. B. /mnt/xbps/repo

entfernt

Auf einem entfernten Host wie z. B. http://domain.tdl/repo Repos können in einer Textdatei im Verzeichnis /etc/xbps.d definiert werden. Die Datei ist sehr einfach aufgebaut

wobei url entweder der Pfad zu einem lokalem Verzeichnis oder die URL zu einem entfernten Repo ist. Also

# echo 'repository=/path/to/dir' > /etc/xbps.d/lokales-repo.conf
# echo 'repository=http://my.domain.com/repository' > /etc/xbps.d/remote-repo.conf

Systemweite Repos werden unter /usr/share/xbps.d abgelegt. Repos die unter /etc/xbps.d vorhanden sind und den gleichen Dateinamen wie unter /usr/share/xbps.d haben, werden verarbeitet. Wenn also eine Datei repo-foo.conf sowohl unter /usr/share/xbps.d als auch unter /etc/xbps.d existiert, wird nur die Datei /etc/xbps.d/repo-foo.conf abgearbeitet.

Offizielle Repos

Öffentliche Keys der Repos (RSA)

Pakete und Repos für void Linux sind mit RSA-Keys signiert; den zum Repo gehörenden Key kann man mit

# xbps-query -vL

abrufen.

Subrepos

Die offiziellen Repos sind zusätzlich in weitere Repos unterteilt, welche da wären:

debug

Enthält Pakete für das Debuggen

nonfree

Enthält Pakete, welche keine freie Lizenz haben (Opera z. B.)

multilib

Enthält 32bit Pakete für 64bit

multilib/nonfree

Wie oben, nur diesmal wieder ohne freie Lizenz Die Pakete sind im "Hauptrepo" vorhanden:

# xbps-query -Rs void-repo
[-] void-repo-debug-9_1            Void Linux drop-in file for the debug repository
[-] void-repo-multilib-6_1         Void Linux drop-in file for the multilib repository
[*] void-repo-multilib-nonfree-6_1 Void Linux drop-in file for the multilib/nonfree repository
[*] void-repo-nonfree-9_1          Void Linux drop-in file for the nonfree repository

Um ein solches Subrepo nutzen zu können, muss man es mit xbps-install repo-name installieren und anschließend mit xbps-install -S synchronisieren.

Archive

Archive der Repos sind unter

verfügbar. Die URL hat folgendes Format: http://archive.voidlinux.eu/musl/YYYY-MM-DD, wobei YYYY-MM-DD das Datum des Repos ist, das man verwenden will; außerdem muss noch angegeben werden ob man die glibc oder musl nutzen will:

# xbps-query --repository=http://archive.voidlinux.eu/glibc/2015-06-15/current -Mis \*
# xbps-query --repository=http://archive.voidlinux.com/musl/2015-06-14/current -Mis \*

Tools

Anders als bei anderen Paketmanagementsystemen setzt XBPS ein Programm für jeden Task ein und um die Repos zu synchronisieren ein
[One job, one tool!]
:

xbps-install

Installiert und aktuallisiert Programme

xbps-query

Ruft Informationen über Repos und Pakete ab

xbps-remove

Löscht installierte Pakete

xbps-reconfigure

Rekonfiguriert bereits installierte Pakete

xbps-pkgdb

Repariert/Ändert die Paketdatenbank

xbps-rindex

Verwaltet lokale Binär-Repos

xbps-alternatives

Verwaltet alternative Gruppen

xbps-checkvers

Sucht nach veralteten Paketen

xbps-create

Erstellt Binärpakete

xbps-dgraph

Erstellt dot(1) Graphen von Paketen

xbps-uchroot

chroot/bind mount mit Linux-Namespaces

xbps-uunshare

Siehe oben, nur diesmal für Linux-User-Namespaces

xbps-install

xbps-install wird genutzt um ein, mehrere oder alle Pakete zu installieren, aktuallisieren, 'downzugrade’n oder das Repo zu synchronisieren. Es stehen folgende Optionen zur Verfügung:

--automatic | -A

Die Installation wird automatisch erledigt

--cachedir | -c

Der Pfad zum Cacheverzeichnis

--config | -C

Der Pfad zur Konfigurationsdatei

--debug | -d

Fehlermeldungen werden in STDERR angezeigt

--dry-run | -n

Es wird ein Testlauf gemacht ohne etwas zu installieren

--force | -f

Erzwingt die Installation

--help | -h

Gibt die Hilfe aus

--ignore-conf-repos | -i

Ignoriert die in xbps.d vorhandenen Repos

--memory-sync | -M

Behält die Daten des entfernten Repos nur im Speicher

--repository | -R

Fügt ein Repo hinzu

--rootdir | -r

Absoluter Pfad zum rootdir

--sync | -S

Synchronisiert das Repo

--unpack-only | -U

Entpackt die Pakete ohne sie zu installieren

--update | -u

Aktuallisiert die angegebenen Pakete

--verbose | -v

Zeigt ausführliche Meldungen an

--version | V

Zeigt die Version von XBPS an

--yes | -y

Beantwortet alle Fragen mit "Ja"

Beispiele

Nachfolgend wird das Repo synchronisiert und verfügbare Updates eingespielt:

# xbps-install -Suv
[*] Updating `https://repo.voidlinux.eu/current/x86_64-repodata' ...
x86_64-repodata: 1122KB [avg rate: 189KB/s]
[*] Updating `https://repo.voidlinux.eu/current/multilib/nonfree/x86_64-repodata' ...
[*] Updating `https://repo.voidlinux.eu/current/nonfree/x86_64-repodata' ...
Found dhcpcd-6.11.5_1 (update) in repository https://repo.voidlinux.eu/current
Found gnutls-3.4.16_1 (update) in repository https://repo.voidlinux.eu/current
Found hexchat-2.12.2_1 (update) in repository https://repo.voidlinux.eu/current
Found libmagick-6.9.6.1_1 (update) in repository https://repo.voidlinux.eu/current

Name      Action    Version           New version            Download size
dhcpcd    update    6.11.3_1          6.11.5_1               143KB
gnutls    update    3.4.15_1          3.4.16_1               497KB
hexchat   update    2.12.1_5          2.12.2_1               1013KB
libmagick update    6.9.6.0_1         6.9.6.1_1              1993KB

Size to download:             3648KB
Size required on disk:        3728KB
Free space on disk:            410GB

Do you want to continue? [Y/n] y

[*] Downloading binary packages
dhcpcd-6.11.5_1.x86_64.xbps: 143KB [avg rate: 348KB/s]
dhcpcd-6.11.5_1.x86_64.xbps.sig: 512B [avg rate: 18MB/s]
gnutls-3.4.16_1.x86_64.xbps: 497KB [avg rate: 95KB/s]
gnutls-3.4.16_1.x86_64.xbps.sig: 512B [avg rate: 19MB/s]
hexchat-2.12.2_1.x86_64.xbps: 1013KB [avg rate: 228KB/s]
hexchat-2.12.2_1.x86_64.xbps.sig: 512B [avg rate: 11MB/s]
libmagick-6.9.6.1_1.x86_64.xbps: 1993KB [avg rate: 216KB/s]
libmagick-6.9.6.1_1.x86_64.xbps.sig: 512B [avg rate: 15MB/s]

[*] Verifying package integrity
dhcpcd-6.11.5_1: verifying RSA signature...
gnutls-3.4.16_1: verifying RSA signature...
hexchat-2.12.2_1: verifying RSA signature...
libmagick-6.9.6.1_1: verifying RSA signature...

[*] Running transaction tasks
[....]
Note

Bevor man ein Paket installiert, kann es von Vorteil sein, das Repo zu synchronisieren. So stellt man sicher, dass man ein veraltetes Paket installiert. Dazu steht die Option -S, --sync zur Verfügung, welche man nicht gesondert aufrufen muss. Um das Repo zu synchronisieren und anschließend sofort das Paket zu installieren, reicht ein

# xbps-install -S paket-foo

Wenn paket-foo installiert ist und im Repo eine neuere Version enthalten ist, wird die Version aus dem Repo installiert.

Wenn man die Option --force,-f verwendet, kann man ein bereits installiertes Programm neu installieren; wenn eine andere Version installiert ist, wird es durch die angegebene Version ersetzt

# xbps-install -Sf package-1.0.1

Zusätzlich stehen auch folgende Pattern zur Verfügung:

<

Kleiner als..

>

Größer als..

<=

Kleiner oder gleich..

>=

Größer oder gleich.. Man kann also auch "paket-version.2.0 oder aktueller" installieren:

# xbps-install paket>=2.0

xbps-query

Mit xbps-query werden Informationen über bereits installierte Pakete wie auch welche in entfernten Repos angezeigt. Um in einem entfernte Repo zu suchen, muss die Option --repository, -R verwendet werden. Bei xbps-query stehen folgende Optionen zur Auswahl:

--cachedir | -c

Absoluter Pfad zum Cacheverzeichnis

--cat

Gibt den Inhalt einer Datei aus einem Binärpaket nach STDOUT aus

--config | -C

Der Pfad zur Konfigurationsdatei

--debug | -d

Fehlermeldungen werden in STDERR angezeigt

--deps | -x

Zeigt die Abhängigkeiten

--files | -f

Zeigt die im Paket enthaltenen Dateien an

--fulldeptree

Die Abhängigkeiten für -x/--deps anzeigen

--help | -h

Gibt die Hilfe aus

--ignore-conf-repos | -i

Ignoriert die in xbps.d vorhandenen Repos

--list-hold-pkgs | -H

Zeigt nur die Pakete an, die auf hold gesetzt sind

--list-manual-pkgs | -m

Zeigt manuell installierte Pakete an

--list-orphans | -O

Zeigt verwaiste Pakete an

--list-pkgs | -l

Zeigt installierte Pakete an

--list-repos | -L

Zeigt die installierten Repos an

--memory-sync | -M

Behält die Daten des entfernten Repos nur im Speicher

--ownedby | -o

Das Paket anzeigen, welches eine bestimmte Datei enthält

--property | -p

Eigenschaften eines Pakets anzeigen

--regex

Extended Regular Expressions (ERE) nutzen

--repository | -R

Repos aktivieren bzw. nutzen

--revdeps | -X

Abhängigkeiten reverse anzeigen

--rootdir | -r

Absoluter Pfad zum rootdir

--search | -s

Nach Paketen suchen

--show | -S

Informationen anzeigen

--verbose | -v

Zeigt ausführliche Meldungen an

--version | -V

Zeigt die Version von XBPS an

Beispiele

Folgendes zeigt alle Pakete an, welche den Status hold haben; Pakete mit diesem Status werden beim nächsten Update nicht aktuallisiert, auch wenn eine neue Version verfügbar ist (mehr über die verschiedenen Status im Abschnitt xbps-pkgdb

# xbps-query -p hold -s ""
# xbps-query -H
Note

Die Option -R ist "optional"; mit -R wird im entfernte Repo gesucht und ohne diese Option nur im lokalem Repo. Nachfolgend werde ich deswegen [-R] schreiben.

Informationen über ein Paket anzeigen:

# xbps-query [-R] paket

Die im Paket enthaltenen Datein anzeigen:

# xbps-query [-R] -f paket

Wenn man wissen will, in welchem Paket z. B. die Datei /usr/bin/make enthalten ist, erfährt man das mit

# xbps-query [-R] -o '/usr/bin/make'
# xbps-query [-R] -o '*/bin/make'
Tip

Die Optionen -R -o funktionieren zwar, aber sind sehr zeitaufwendig. Alternativ dazu kann man sich das Paket xtools installieren. Dort ist dann das Programm xlocate enthalten, welches lokal eine Datenbank erstellt, welche man dann

# xlocate -S
# xlocate '/usr/bin/make'

ѕynchronisieren (-s) und durchsuchen kann

Es stehen auch hier wieder die gleichen Pattern wie für xbps-install zur Verfügung. Will man sich nur die Pakete aus einem bestimmten Repo anzeigen lassen, geht das mit

# xbps-query --repository=https://repo.voidlinux.eu/current/multilib/nonfree -i -s \*

Mit --cat' kann man sich eine bestimmte Datei aus einem Paket anzeigen lassen. Dazu ein kleines Beispiel. Zuerst werden die im Paket slrn enthaltenen Dateien angezeigt und anschließend wird die Datei /usr/share/doc/slrn/README auf STDOUT ausgegeben.

# xbps-query -f slrn
[...]
/usr/bin/slrn
/usr/bin/slrnpull
/usr/share/examples/slrn/slrn.rc
/usr/share/doc/slrn/README
/usr/share/doc/slrn/slrn-doc.html
/usr/share/doc/slrn/score.txt
[...]
# xbps-query --cat=/usr/share/doc/slrn/README slrn

Wenn man die Option --property,-p verwendet, stehen zusätzliche Parameter zur Verfügung. architecture, archive-compression-type, automatic-install, build-options, conf_files, conflicts, filename-sha256, filename-size, homepage, install-date, install-msg, install-script, installed_size, license, maintainer, metafile-sha256, pkgver, preserve, provides, remove-msg, remove-script, replaces, repolock, repository, reverts, shlib-provides, shlib-requires, short_desc, source-revisions, state. Angegeben werden diese einzeln oder durch Komma getrennt. Auf diese Parameter gehe ich nicht weiter ein, da diese selbsterklärend sind.

# xbps-query --property=architecture,homepage slrn

Bei der Option -ļ, --list-pkgs gibt es verschiedene Status:

ii

Das Paket ist installiert

uu

Das Paket ist entpackt, aber muss mit xbps-reconfigure(1) konfiguriert werden

hr

Das Paket ist 'halb entfernt' und kann mit 'xbps-remove(1) vollständig gelöscht werden

??

Der Status des Paket ist unbekannt.

xbps-remove

Mit xbps-remove werden bereits installierte Pakete wieder deinstalliert. Wenn ein Paket damit entfernt wird, werden folgende Schritte abgearbeitet:

  1. Es wird das Target pre im REMOVE - Script ausgeführt. Wie das aussieht, kann man mit xbps-query --property=remove-script paket erfahren.

  2. Die im Paket enthaltenen Dateien werden nur dann entfernt, wenn sie nicht geändert wurden. Will man sie trotzdem mit deinstallieren lassen, erreicht man das mit der Option -f.

  3. Es wird das Target post im REMOVE - Script ausgeführt.

  4. Der Paketstatus innerhalb der Datenbank wird in “XBPS_PKG_STATE_HALF_REMOVED” geändert.

  5. Das Target purge im REMOVE - Script wird ausgeführt

  6. Die Datei mit den Metadaten des Pakets wird gelöscht.

  7. Das Paket wird aus der Datenbank ausgetragen. Es stehen folgende Optionen zur Verfügung

    --config | -C

    Der Pfad zur Konfigurationsdatei

    --cachedir | -c

    Absoluter Pfad zum Cacheverzeichnis

    --debug | -d

    Fehlermeldungen werden in STDERR angezeigt

    --force-revdeps | -F

    Löschen erzwingen, selbst bei reverse dependencies und/oder kaputten shared Libs

    --force | -f

    Löschen erzwingen, selbst wenn Dateien geändert wurden

    --help | -h

    Gibt die Hilfe aus

    --dry-run | -n

    Deinstallation simulieren und anzeigen welche Schritte ausgeführt werden.

    --clean-cache | -O

    Das Cacheverzeichnis bzw. unnötige Binärpakete löschen

    --remove-orphans | -o

    Verwaiste Pakete deinstallieren; das sind solche, welche als Abhängigkeit von einem Programm automatisch installiert wurden, aber nicht mehr benötigt werden

    --recursive | -R

    Alle Pakete deinstallieren, welche von PAKET installiert wurden und nicht von anderen Paketen benötigt werden

    --rootdir | -r

    Absoluter Pfad zum rootdir

    --verbose | -v

    Zeigt ausführliche Meldungen an

    --yes | -y

    Beantwortet alle Fragen mit "Ja"

    --version | -V

    Zeigt die Version von XBPS an Der Aufruf ist ganz einfach:

# xbps-remove [--option(en) ] paket(e)

xbps-reconfigure

Mit xbps-reconfigure werden bereits installierte Pakete neu konfiguriert. Dazu wird zuerst das Target post im INSTALL - Script abgearbeitet und anschließend der Paketstatus in der Datenbank auf XBPS_PKG_STATE_INSTALLED geändert. Letzteres setzt aber vorraus, dass der erste Schritt erfolgreich abgearbeitet wurde
[exit-Status == 0]
. Es werden nur Pakete abgearbeitet, welche noch nicht konfiguriert wurden. Will man bereits konfigurierte Pakete verarbeiten, muss man die Option --force verwenden. Weiterhin stehen folgende Optionen zur Auswahl

--all | -a

Alle Pakete

--config | -C

Der Pfad zur Konfigurationsdatei

--debug | -d

Fehlermeldungen werden in STDERR angezeigt

--force | -f

Erzwingt das Reconfigure

--help | -h

Gibt die Hilfe aus

--ignore | -i

Ignoriert das angegebene Paket wenn man die Option -a nutzt

--rootdir | -r

Absoluter Pfad zum rootdir

--verbose | -v

Zeigt ausführliche Meldungen an

--version | -V

Zeigt die Version von XBPS an Die Syntax ist also wie folgt:

# xbps-reconfigure [ --option(en) ] paket(e)

xbps-pkgdb

Mit dem Programm xbps-pkgdb kann man die Datenbank und auch die Pakete auf Fehler untersuchen und diese ggf. melden. Folgende Aufgaben können verrichtet werden

Metadaten prüfen

Es wird geprüft ob die Metadaten des Pakets nicht geändert wurden; das wird gemacht, indem der originale Hash zum Zeitpunkt der Installation des Pakets mit dem aktuellen verglichen wird.

Dateien prüfen

Das gleiche Prinzip wie bei den Metadaten; hier wird geprüft ob alle Dateien vorhanden sind und ob sie verändert wurden. Für reguläre Dateien wird dazu das 'Modification time’
[Zeit der letzten Änderung desDateiinhalts]
und der SHA256 Hash verglichen. Bei symbolischen Links wird geprüft ob das Ziel nicht geändert wurde.

Abhängigkeiten prüfen

Es wird geprüft ob alle benötigten Abhängіgkeiten für ein Paket erfüllt wurden.

Veraltete Metadaten prüfen

Prüfen ob die Datenbank keine veralteten Daten einer vorherigen Version von XBPS enthält und löscht diese ggf.

Datenbankformat anpassen

Aktuallisiert das Format der Datenbank auf die neuste Version.

Es stehen folgende Optionen zur Auswahl:

--all | -a

Alle Pakete, unabhängig ihres Status abarbeiten

--config | -C

Der Pfad zur Konfigurationsdatei

--debug | -d

Fehlermeldungen werden in STDERR angezeigt

--help | -h

Gibt die Hilfe aus

--mode | -m

Wechselt den Status vom angegebenem Paket zu einem der folgenden Modus:

auto|manual

Ein Paket das als Abhängigkeit installiert wurde, wird in den automatic - Modus geändert, andernfalls auf manual

hold|unhold

Ein Paket mit dem Status hold wird beim nächsten Update des Systems nicht aktuallisiert.

repolock|repounlock

Ein Paket mit dem Status repolock wird nur aktuallisiert, wenn die Updates aus dem gleichem Repo kommen, aus dem das Paket installiert wurde.

--rootdir | -r

Absoluter Pfad zum rootdir

--update | -u

Aktuallisiert das Datenbankformat

--verbose | -v

Zeigt ausführliche Meldungen an

--version | -V

Zeigt die Version von XBPS an

xbps-rindex

Mit diesem Programm kann man lokale Repos erstellen, veraltete Binärpakete darin entfernen und Pakete signieren. Folgende Optionen stehen zur Verfügung:

--debug | -d

Fehlermeldungen werden in STDERR angezeigt

--force | -f

Erzwingt das Einfügen eines Binärpaketes in das lokale Repo, überschreibt einen bereits vorhandenen Eintrag oder erzwingt das erstellen einer Signatur für ein Paket, selbst wenn bereits eine existiert. Diese Option ist nur in Verbindung mit den Modes add oder sign-pkg sinnvoll.

--help | -h

Gibt die Hilfe aus

--version | -V

Zeigt die Version an

--signedby

Das ist notwendig um ein Repo zu signieren und ist üblicherweise der Name und die Email.

--privkey

Der Pfad zum privatem RSA-Key um das Repo zu signieren. Nicht angegeben, wird der Standard ~/.ssh/id_rsa genutzt.

Weiterhin kann man die nachfolgenden Modus verwenden:

--add | -a /pfad/zum/repo/binpaket.xbps ..

Registriert das Binärpaket im Repo. Das angegebene Paket wird nur im Index hinzugefügt, wenn die Version neuer ist als die bereits eingetragene; wenn man die Option --force,-f verwendet, wird der Eintrag erzwungen.

--clean | -c /pfad/zum/repo

Entfernt veraltete Einträge.

--remove-obsoletes | -r /pfad/zum/repo

Entfernt veraltete Pakete aus dem Repo. Es werden auch Pakete entfernt, welche noch nicht im Index registriert sind.

--sign | -s /pfad/zum/repo

Initialisiert ein signiertes Repo mit dem angegebenem RSA-Key.

--sign-pkg | -S /pfad/zum/repo/binpaket.xbps

Signiert das angegebene Binärpaket mit dem RSA-Key.

Beispiele

Ein lokale Repo erstellen:

# xbps-rindex -a /pfad/zum/repo/*.xbps

Sobald das erledigt wurde, kann man /pfad/zum/repo entweder als Argument für die Option --repository übergeben oder in /etc/xbps.d/ definieren.+ Ein bestimmtes Paket zum Repo hinzufügen:

# xbps-rindex -a /pfad/zum/repo/foobar-1.0_1.x86_64.xbps

Das Repo signieren:

# xbps-rindex --sign --signedby "Christian Schneider <strcat@gmx.net>" /pfad/zum/repo

xbps-alternatives

Hiermit werden Alternativen zu den installierten Programmen angezeigt, aber können auch verändert werden.

--config | -C

Der Pfad zur Konfigurationsdatei

--debug | -d

Fehlermeldungen werden in STDERR angezeigt

--group | -g

Der alternative Gruppenname wird mit dem set - Modus eingesetzt

--help | -h

Gibt die Hilfe aus

--rootdir | -r

Absoluter Pfad zum rootdir

--verbose | -v

Zeigt ausführliche Meldungen an

--version | -V

Zeigt die Version an

--list | -l [ paket [ -g gruppe ]]

Listet alle Alternativen Gruppen für paket auf (oder für die Gruppe, sofern --group,-g angegeben wurde)

--set | -s paket [ -g gruppe ]

Setzt eine Alternative für paket oder die angegebene Gruppe

xbps-checkvers

Hiermit werden veraltete Pakete in einem Verzeichnis oder allen registrierten Repos geprüft, indem die Paketversion mit der Version in void-packages verglichen wird. Optionen stehen folgende zur Verfügung

--config | -C

Der Pfad zur Konfigurationsdatei

--distdir | -D

Der absolute Pfad zum Repo void-packages.

--debug | -d

Fehlermeldungen werden in STDERR angezeigt

--help | -h

Gibt die Hilfe aus

--installed | -i

Sucht nach veralteten installierten Paketen

--repository= | -R

Die URI des Repos, welches damit an erster Stelle hinzugefügt wird

--rootdir | -r

Absoluter Pfad zum rootdir

--show-missing | -s

Zeigt fehlende Binärpakete, indem es mit dem Tree von void-packages verglichen wird.

--version | V

Zeigt die Version von XBPS an

xbps-create

Mit diesem Programm kann man Binärpakete erstellen, welche in einem Verzeichnis gespeichert werden. Die Dateien müssen die korrekten Rechte und Pfade innerhalb des Verzeichnisses haben. Hier stehen einige Optionen zur Auswahl

--architecture | -A

Die Architektur für die das Paket erstellt wird (notwendig). Wenn das Paket an keine Architektur gebunden ist, verwendet man noarch.

--build-with | -B string

Eine frei wählbare Angabe

--conflicts | -C list

Hier werden die Pakete angegeben, mit denen das Paket in Konflikt steht; mehrere Pakete werden durch Leerzeichen getrennt und es können auch bestimmte Versionsnummern angegeben werden (foobar>=2.0 barfoo<3.0)

--dependencies | -D list

Siehe oben, nur diesmal bezieht es sich auf die Abhängigkeiten

--config-files | -F list

Die Liste der Konfigurationsdateien, die im Paket enthalten sind

---source-revisions | -G

Hier kann man die GIT Revision angeben; ist aber optional, da diese von xbps-src automatisch gesetzt wird.

--homepage | -H string

Die Homepage des Programms

--help | -h

Gibt die Hilfe aus

--license | -l string

Die Lizenz des Pakets

--mutable-files | -M list

Eine Liste der veränderbaren Dateien im Paket

--maintainer | -m string

Der Name des Maintainers und/oder dessen Emailadresse

--pkgver | -n string

Der Name und die Version des Pakets in der Form foobar-1.0.1

--provides | -P list

Eine Liste der virtuellen Pakete, welche das Paket benötigt (getrennt durch Leerzeichen)

--preserve | -p

Hiermit kann bestimmt werden, dass das Paket nach einem Update behalten werden soll

--quiet | -q

Keine Meldungen anzeigen

--replaces | -R list

Eine Paketliste mit Patterns, welche Pakete dieses Paket ersetzt; z. B.: foobar>=1.2 barfoo>=2.0

--reverts | -r list

Eine Liste mit Paketen welche das Paket zurücksetzt; z. B.: 1.0_1 1.1_1

--long-desc | -S string

Eine ausführliche Beschreibung des Pakets

--desc | -s string

Eine Kurzbeschreibung des Pakets (eine Zeile mit max. 80 Zeichen!)

--tags | -t list

Eine Liste von Tags (Kategorien) in welche man das Paket zuordnen kann; z. B.: development nonfree

--version | -V

Zeigt die Version an

--build-options string

Die Optionen die genutzt wurden um das Paket zu bauen

--compression

Das Format der Kompression. Zur Verfügung stehen gzip, bzip2 und xz. Default ist xz

--shlib-provides list

Eine Liste der Shared Libraries, getrennt durch Leerzeichen, z. B.: libfoo.so.1 libbar.so.2

--shlib-requires list

Eine Liste der benötigten Shared Libs, ebenfalls durch Leerzeichen getrennt

--alternatives list

Eine Liste der Alternativen dieses Pakets.

Note

Wie man ein Paket erstellt und es anschließend in das eigene Repo einfügt werde ich in einem eigenem Tutorial erklären!

xbps-dgraph

Hiermit wird ein 'dot(1)'
[dot ist Bestandteil von Graphviz]
- Graph eines angegebenen Paket erstellt, welche in einem Verzeichnis oder registriertem Repo enthalten ist. Das Ergebnis wird auf STDOUT ausgegeben. Der Name des Pakets kann auf drei Arten angegeben werden∵ Einmal ohne Version, als paketname und zum zweiten mit der exakten Version (paketname-1.0.1). Weiterhin stehen noch die schon bekannten Pattern zur Verfügung.
Optionen kann man folgende angeben:

--config | -C

Der Pfad zum Konfigurationsverzeichnis

--graph-config | -c

Der Pfad zur Konfigurationsdatei von Graphviz.

--debug | -d

Fehlermeldungen werden in STDERR angezeigt

--help | -h

Gibt die Hilfe aus

--memory-sync | -M

Die Daten werden aus einem entfernten Repo geholt und für den aktuellen Arbeitsgang im Speicher gehalten.

--repository | -R

Aktiviert den Repo-Modus

--rootdir | -r

Absoluter Pfad zum rootdir

--version | V

Zeigt die Version an.

--gen-config | -g

Erstellt eine Graphvizkonfigurationsdatei im aktuellen Verzeichnis

--fulldeptree | -f

Erstellt eine Grafik über die vollständigen Abhängigkeiten des Pakets

--metadata | -m

Erstelle eine Grafik über die Metadaten.

Folgender Aufruf

# xbps-dgraph -f zsh | dot -Tpng > zsh.png

erstellt das nachfolgende Bild:

zsh.png

Besonders Mutige dürfen das auch gerne mit kde-4 machen.

xbps-uchroot

xbps-uchroot erlaubt es regulären Usern Pseudo-Dateisysteme (/dev, /proc, und /sys) im angegebenem Verzeichnis zu 'chroot’en und ein angegebeneѕ Kommando auszuführen. Damit dieses Programm ausgeführt werden kann, müssen folgende Kernel-Optionen gesetzt sein:

  • CONFIG_NAMESPACES

  • CONFIG_IPC_NS

  • CONFIG_PID_NS

  • CONFIG_UTS_NS

Weiterhin muss der User Mitglied einer Gruppe sein, die xbps-uchroot(1) ausführen darf und die Executable muss ein gesetztes “setgid” haben

# chown root:<group> xbps-uchroot
# chmod 4750 xbps-uchroot
# usermod -a -G <group> <user>
Note

Obiges sollte man nicht “per Hand” ausführen, da das vom System übernommen wird! Der User muss Mitglied der Gruppe xbuilder sein.

Um es zu aktivieren reicht ein

# cd void-packages
# echo XBPS_CHROOT_CMD=uchroot >> etc/conf

Sollte es zu einer Fehlermeldung wie ERROR clone (Operation not permitted) kommen, überprüft ob der User auch wirklich Mitglied der Gruppe ist und xbps-uchroot(1) die nötigen Rechte besitzt.

Die Optionen sind folgende:

-b src:dest

Bindet mounts src innerhalb CHROOTDIR/dest. Diese Option kann man mehrmals angeben, wobei src wie auch dest absolute Pfade sein müssen

-O

Legt ein temporäres Verzeichnis an und erstellt einen ‘`overlay layer’footnote:[Mittels OverlayFS und setzt 'CHROOTDIR dementsprechend.

-o optionen

Hier werden die für tmpfs mount nötigen Optionen angegeben, sofern -O und -t genutzt werden.

-t

Das erstellt ein temporäres Verzeichnis das mit tmpfs gemountet werden kann, damit alles im RAM abgelegt werden kann.

xbps-uunshare

Es müssen die gleichen Optionen im Kernel gesetzt werden wie bei xbps-uchroot. Wenn diese Optionen nicht gesetzt sind, beendet sich das Programm mit einem EINVAL (Invalid argument). Mit xbps-uunshare ist es einem User möglich die benötigten Pseudo-Dateisysteme /dev, /proc, und /sys unter CHROOTDIR zu mounten und das angegebene Kommando auszuführen. Es gibt hier nur die Option -b src:dest, wobei auch hier die Pfade absolut angegeben werden müssen.