SYSUPDATE.FEATURES(5)

BEZEICHNUNG
sysupdate.features - Definitionsdateien für Optionale Funktionalitäten

ÜBERSICHT

    /etc/sysupdate.d/*.feature
    /run/sysupdate.d/*.feature
    /usr/local/lib/sysupdate.d/*.feature
    /usr/lib/sysupdate.d/*.feature

BESCHREIBUNG

»Optionale Funktionalitäten« sind Funktionalitäten, die durch systemd-sysupdate(8) bereitgestellt werden, die es Distributionen erlauben, einen Satz von sysupdate.d(5)-Übertragungsdefinitionen zu definieren, die dazu gedacht sind, vom Systemadministrator aktiviert oder deaktiviert zu werden.

Wenn eine Funktionalität aktiviert ist, werden zugehörige Übertragungen betrachtet, wenn auf Aktualisierungen geprüft und diese heruntergeladen werden, wenn Datenträger bereinigt werden und in allen anderen Situationen. Effektiv werden Übertragungen, die zu einer Funktionalität gehören, immer fest mit dem Rest ihres Ziels verzahnt aktualisiert. Dies ist der Hauptunterschied zwischen einer Optionalen Funktionalität und der Komponente systemd-sysupdate(8). Wenn eine Funktionalität deaktiviert ist, werden ihre Übertragungen nicht betrachtet, wenn auf Aktualisierungen geprüft und diese heruntergeladen werden, aber systemd-sysupdate(8) wird sie weiterhin betrachten, wenn Datenträger bereinigt werden und in anderen Situationen, bei denen die Eigentümerschaft über vorher heruntergeladene Systemressourcen bestimmt werden muss. systemd-sysupdate(8) wird alle Instanzen der Übertragungen der Funktionalität bereinigen, wenn sie deaktiviert wird und sie damit effektiv deinstallieren.

Optionale Funktionalitäten werden durch Dateien sysupdate.d/*.feature beschrieben, die nachfolgend definiert sind. Übertragungen können mit der Einstellung Features= erklären, dass sie zu einer Funktionalität gehören. Funktionalitätsdefinitionen unterstützen Ergänzungsdateien, die am häufigsten dazu verwandt werden, die Einstellung Enabled= außer Kraft zu setzen. Sie können auch maskiert werden, um die Verfügbarkeit der Funktionalität komplett zu verstecken.

Jede Datei *.feature enthält einen Abschnitt: »[Feature]«.

[FEATURE]-ABSCHNITTOPTIONEN

Dieser Abschnitt beschreibt die allgemeinen Eigenschaften dieser Funktionalität.

Description=
    Eine kurze, menschenlesbare Beschreibung dieser Funktionalität. Dies kann als Kennzeichnung für diese Funktionalität verwandt werden, so dass die Zeichenkette mit einer Bedeutung belegt werden sollte, die sie von den in sysupdate.d/ verfügbaren Funktionalitäten hervorhebt.

    Hinzugefügt in Version 257.

Documentation=
    Eine URL, die dem Benutzer gezeigt werden kann, um die Funktionalität zu dokumentieren. Diese Einstellung unterstützt Kennzeichnerexpansionen; nachfolgend finden Sie die unterstützten Kennzeichner.

    Hinzugefügt in Version 257.

AppStream=
    Eine URL zu einer AppStream catalog[1]-XML-Datei. Dies kann von Software-Verwaltungsprogrammen (wie »GNOME Software« oder »KDE Discover«) verwandt werden, um umfangreiche Metadaten über diese Funktionalität bereitzustellen. Dazu gehören Namen, Verlaufsprotokolle, Icons und weiteres. Diese Einstellung unterstützt die Expansion von Kennzeichnern; die unterstützten Kennzeichner werden weiter unten dargestellt.

    Hinzugefügt in Version 257.

Enabled=
    Gibt an, ob diese Funktionalität (nicht) aktiviert ist. Falls nicht festgelegt, ist diese Funktionalität standardmäßig deaktiviert.

    Hinzugefügt in Version 257.

KENNZEICHNER

In den Einstellungen Documentation= und AppStream= können Kennzeichner verwandt werden. Es werden die Folgenden verstanden:

Tabelle 1. Verfügbare Kennzeichner
Kennzeichner | Bedeutung | Details
"%a" | Architektur | Eine kurze Zeichenkette, die die Architektur des lokalen Systems identifiziert. Eine Zeichenkette wie x86, x86-64 oder arm64. Siehe die für ConditionArchitecture= in systemd.unit(5) definierten Architekturen für die vollständige Liste.
"%A" | Betriebssystemabbildversion | Die Betriebssystemabbildversionskennzeichnung des laufenden Systems, wie aus dem Feld IMAGE_VERSION= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es zur leeren Zeichenkette aufgelöst. Siehe os-release(5) für weitere Informationen.
"%b" | Boot-Kennung | Die Boot-Kennung des laufenden Systems, formatiert als Zeichenkette. Siehe random(4) für weitere Informationen.
"%B" | Betriebssystembaukennung | Die Betriebssystembaukennung des laufenden Systems, wie aus dem Feld BUILD_ID= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es zur leeren Zeichenkette aufgelöst. Siehe os-release(5) für weitere Informationen.
"%H" | Rechnername | Der Rechnername des laufenden Systems.
"%l" | Kurzer Rechnername | Die Rechnername des laufenden Systems, abgeschnitten am ersten Punkt, um alle Domain-Komponenten zu entfernen.
"%m" | Maschinenkennung | Die Maschinenkennung des laufenden Systems, formatiert als Zeichenkette. Siehe machine-id(5) für weitere Informationen.
"%M" | Betriebssystemabbildkennung | Die Betriebssystemabbildkennung des laufenden Systems, wie aus dem Feld IMAGE_ID= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es die leere Zeichenkette. Siehe os-release(5) für weitere Informationen.
"%o" | Betriebssystemkennung | Die Betriebssystemkennung des laufenden Systems, wie aus dem Feld ID= in /etc/os-release ausgelesen. Siehe os-release(5) für weitere Informationen.
"%v" | Kernelveröffentlichung | Identisch zur Ausgabe von uname -r.
"%w" | Betriebssystemversionskennung | Die Betriebssystemversionskennzeichnung des laufenden Systems, wie aus dem Feld VERSION_ID= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es die leere Zeichenkette. Siehe os-release(5) für weitere Informationen.
"%W" | Betriebssystemvariantenkennung | Die Betriebssystemvariantenkennung des laufenden Systems, wie aus dem Feld VARIANT_ID= in /etc/os-release ausgelesen. Falls nicht gesetzt, wird es die leere Zeichenkette. Siehe os-release(5) für weitere Informationen.
"%T" | Verzeichnis für temporäre Dateien | Dies ist entweder /tmp oder der Pfad, auf den »$TMPDIR«, »$TEMP« oder »$TMP« gesetzt ist. (Beachten Sie, dass das Verzeichnis ohne abschließenden Schrägstrich angegeben werden kann.)
"%V" | Verzeichnis für größere und dauerhafte temporäre Dateien | Dies ist entweder /var/tmp oder der Pfad, auf den »$TMPDIR«, »$TEMP« oder »$TMP« gesetzt ist. (Beachten Sie, dass das Verzeichnis ohne abschließenden Schrägstrich angegeben werden kann.)
"%%" | Einzelnes Prozentzeichen | Verwenden Sie »%%« anstelle von »%«, um ein einzelnes Prozentzeichen anzugeben.

BEISPIELE

Beispiel 1. Entwicklungswerkzeuge für Abbild-basiertes Betriebssystem

Als Beispielbetriebssystem wird das in sysupdate.d(5) beschriebene hypothetische »foobarOS« verwandt. Die große Mehrheit der Benutzer von foobarOS benötigen keine Compiler, kein Bausystem, Debugger und andere solche Entwicklungswerkzeuge als Teil ihres Betriebssystems. Die Entwickler von foobarOS selbst benötigen die Verfügbarkeit der Entwicklungswerkzeuge. Daher muss foobarOS ein Systemerweiterungsabbild (siehe systemd-sysext(8)) bereitstellen, das diese Entwicklungswerkzeuge enthält, und dieses Abbild muss fest verzahnt mit dem zugrundeliegenden Betriebssystem aktualisiert werden. Dies ist ein wunderbarer Anwendungsfall für eine optionale Betriebssstemfunktionalität, daher wird sie als solche definiert:

    # /usr/lib/sysupdate.d/devel.feature
    [Feature]
    Description=Entwicklungswerkzeuge
    Documentation=https://developer.example.com/foobarOS/getting-started
    Enabled=false

Obiges definiert die Funktionalität »devel« und deaktiviert sie standardmäßig. Jetzt wird eine Übertragung definiert, die das dieser Funktionalität zuordnet:

    # /usr/lib/sysupdate.d/50-devel.transfer
    [Transfer]
    Features=devel
    ProtectVersion=%A

    [Source]
    Type=url-file
    Path=https://download.example.com/
    MatchPattern=foobarOS_@v_devel.raw.xz

    [Target]
    Type=regular-file
    Path=/var/lib/extensions
    MatchPattern=foobarOS_@v_devel.raw
    Mode=0444
    InstancesMax=2

Mit diesen zwei Dateien wurde eine Funktionalität namens »devel« erstellt, die bei der Aktivierung die geeignete Version von »https://download.example.com/foobarOS_@v_devel.raw.xz« nach »/var/lib/extensions/foobarOS_@v_devel.raw« während jeder Betriebssystemaktualisierung herunterlädt und entpackt.

Die Entwickler von foobarOS können die Funktionalität »devel« auf ihren Maschinen durch Erstellung der folgenden Ergänzung aktivieren:

    # /etc/sysupdate.d/devel.feature.d/enable.conf
    [Feature]
    Enabled=true

Beispiel 2. Proprietäre Treiber

Nehmen wir an, dass die Benutzer von foobarOS eine von der Firma MVISUAL hergestellte GPU verwenden. Aufgrund fehlender Dokumentation und Schwierigkeiten beim Nachkonstruieren (»Reverse Engineering«) der Hardware, können die Open-Source-Treiber für MVISUAL GPUs die verfügbare Graphik- und Rechenleistung nicht vernünftig ausnutzen. MVISUAL stellt einen proprietären Treiber für diese Karten bereit, der weiterverteilt werden darf und die Entwickler von foobarOS verteilen ihn weiter, um die Bedürfnisse ihrer Benutzer zu berücksichtigen.

Der Treiber MVISUAL enthält eine Reihe von verschiedenen Teilen, die zum Funktionieren installiert werden müssen: eine UKI-Ergänzung, um die Kernel-Befehlszeile zu konfigurieren, ein Initrd-System-Erweiterungsabbild, um das MVISUAL-Kernelmodul in die Initrd zu installieren und ein normales Systemerweiterungsabbild, um die proprietären OpenGL- und Vulkan-Benutzerraumtreiber hinzuzufügen. Alle diese sollten in der Version fest mit dem Kernbetriebssystem verzahnt werden.

Zuerst wird eine optionale Funktionalität names »mvisual-driver« definiert:

    # /usr/lib/sysupdate.d/mvisual-driver.feature
    [Feature]
    Description=Proprietärer MVISUAL-GPU-Treiber
    Documentation=https://support.example.com/foobarOS/mvisual
    AppStream=https://metadata.example.com/mvisual-driver-%A.xml.gz

Beachten Sie, dass AppStream-Metadaten für diese Funktionalität definiert werden, da Software-Verwaltungsprogramme sie Endanwendern zeigen sollen. Als nächstes werden die entsprechenden Übertragungen definiert:

    # /usr/lib/sysupdate.d/50-mvisual-userspace.transfer
    [Transfer]
    Features=mvisual-driver
    ProtectVersion=%A

    [Source]
    Type=url-file
    Path=https://download.example.com/
    MatchPattern=foobarOS_@v_mvisual_userspace.raw.xz

    [Target]
    Type=regular-file
    Path=/var/lib/extensions
    MatchPattern=foobarOS_@v_mvisual.raw
    Mode=0444
    InstancesMax=2

    # /usr/lib/sysupdate.d/70-mvisual-initrd.transfer
    [Transfer]
    Features=mvisual-driver
    ProtectVersion=%A

    [Source]
    Type=url-file
    Path=https://download.example.com/
    MatchPattern=foobarOS_@v_mvisual_initrd.raw.xz

    [Target]
    Type=regular-file
    Path=/EFI/Linux
    PathRelativeTo=boot
    MatchPattern=foobarOS_@v.efi.extra.d/foobarOS_mvisual.raw
    Mode=0444
    InstancesMax=2

    # /usr/lib/sysupdate.d/90-mvisual-addon.transfer
    [Transfer]
    Features=mvisual-driver
    ProtectVersion=%A

    [Source]
    Type=url-file
    Path=https://download.example.com/
    MatchPattern=foobarOS_@v_mvisual_addon.efi.xz

    [Target]
    Type=regular-file
    Path=/EFI/Linux
    PathRelativeTo=boot
    MatchPattern=foobarOS_@v.efi.extra.d/foobarOS_mvisual.addon.efi
    Mode=0444
    InstancesMax=2

Beispiel 3. Schnittmenge von Funktionalitäten

Nehmen wir an, dass MVISUAL einen besonderen Werkzeugssatz veröffentlicht, der Distributionsentwicklern bei der Fehlersuche in Abstürzen in ihren proprietären Treibern hilft. Dazu wird eine Übertragung definiert:

    # /usr/lib/sysupdate.d/50-mvisual-debugger.transfer
    [Transfer]
    RequisiteFeatures=devel mvisual-driver
    ProtectVersion=%A

    [Source]
    Type=url-file
    Path=https://download.example.com/
    MatchPattern=foobarOS_@v_devel.raw.xz

    [Target]
    Type=regular-file
    Path=/var/lib/extensions
    MatchPattern=foobarOS_@v_devel.raw
    Mode=0444
    InstancesMax=2

Diese Übertragung wird nur verwandt, falls sowohl die Funktionalität »devel« als auch »mvisual-driver« aktiviert sind.

SIEHE AUCH

systemd(1), systemd-sysupdate(8), sysupdate.d(5)

ANMERKUNGEN

1.  AppStream-Katalog
    https://www.freedesktop.org/software/appstream/docs/chap-CatalogData.html

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.