SYSTEMD.ENVIRONMENT-GENERATOR(7) systemd.environment-generator BEZEICHNUNG systemd.environment-generator - Systemd-Umgebungsdatei-Generatoren UBERSICHT /usr/lib/systemd/system-environment-generators/some-generator /usr/lib/systemd/user-environment-generators/ein-Generator /run/systemd/system-environment-generators/* /etc/systemd/system-environment-generators/* /usr/local/lib/systemd/system-environment-generators/* /usr/lib/systemd/system-environment-generators/* /run/systemd/user-environment-generators/* /etc/systemd/user-environment-generators/* /usr/local/lib/systemd/user-environment-generators/* /usr/lib/systemd/user-environment-generators/* BESCHREIBUNG Generatoren sind kleine Programme, die sich in /usr/lib/systemd/system-environment-generators/ und anderen oben aufgefuhrten Verzeichnissen befinden. systemd(1) wird diese Programme sehr fruh beim Hochfahren jedes Verwalters und zum Zeitpunkt des Neuladens der Konfiguration ausfuhren, bevor die in systemd.generator(7) beschriebenen Generatoren ausgefuhrt werden und bevor irgendeine Unit gestartet wird. Umgebungsgeneratoren konnen die Umgebung, die der Verwalter an Dienste und andere Prozesse exportiert, ausser Kraft setzen. Generatoren werden aus einer Gruppe von Pfaden, die wahrend der Kompilierung bestimmt werden, wie diese oben aufgefuhrt sind, geladen. System- und Benutzerumgebungsgeneratoren werden aus Verzeichnissen geladen, deren Namen in system-environment-generators/ bzw. user-environment-generators/ enden. Generatoren, die in fruher aufgefuhrten Verzeichnissen gefunden werden, setzen diejenigen ausser Kraft, die mit dem gleichen Namen in Verzeichnissen weiter hinten in der Liste sind [1]. Ein Symlink auf /dev/null oder eine leere Datei kann zur Ausmaskierung eines Generators verwandt werden, wodurch dessen Ausfuhrung verhindert wird. Bitte beachten Sie, dass die Reihenfolge der zwei Verzeichnisse mit der hochsten Prioritat in Hinblick auf den Unit-Ladepfad umgedreht ist und Generatoren in /run/ solche in /etc/ ausser Kraft setzen. Nach der Installation neuer Generatoren oder der Aktualisierung ihrer Konfiguration kann systemctl daemon-reload ausgefuhrt werden. Dies wird alle Generatoren erneut ausfuhren und ihre Umgebungskonfiguration aktualisieren. Sie wird fur alle nachfolgend gestarteten Dienste verwandt. Umgebungsdateigeneratoren werden ahnlich wie die in systemd.generator(7) beschriebenen Unit-Dateigeneratoren ausgefuhrt, mit den folgenden Unterschieden: o Generatoren werden der Reihe nach in der alphanumerischen Reihenfolge ihrer finalen Komponenten ihres Namens ausgefuhrt. Die Ausgabe jedes Generators wird sofort ausgewertet und zur Aktualisierung der Umgebung fur Generatoren, die danach ausgefuhrt werden, verwandt. Daher konnen spatere Generatoren die Ausgabe von fruheren Generatoren verwenden und/oder verandern. o Generatoren werden von jeder Verwalterinstanz ausgefuhrt, ihre Ausgabe kann fur jeden Benutzer anders sein. Es wird empfohlen, Generatorennamen mit Zahlen zu beginnen, um ihre Ordnung zu vereinfachen. BEISPIELE Beispiel 1. Ein einfacher Generator, der eine Umgebungsvariable erweitert, falls ein Verzeichnis im Dateisystem existiert # 50-xdg-data-dirs.sh #!/bin/sh # SPDX-License-Identifier: MIT-0 # setzt den Vorgabewert XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share/:/usr/share}" # fugt ein Verzeichnis hinzu, falls es existiert if [ -d /opt/foo/share ]; then XDG_DATA_DIRS="/opt/foo/share:${XDG_DATA_DIRS}" fi # schreibt unsere Ausgabe echo "XDG_DATA_DIRS=${XDG_DATA_DIRS}" Beispiel 2. Ein komplizierterer Generator, der bestehende Konfiguration liest und eine Variable verandert # 90-rearrange-path.py #!/usr/bin/python # SPDX-License-Identifier: MIT-0 """ Konzept fur einen beispielhaften Systemd-Umgebungsgenerator, der sicherstellt, dass bin-Verzeichnisse immer nach den passenden sbin-Verzeichnissen im Pfad sind. (Andert /sbin:/bin:/foo/bar in /bin:/sbin:/foo/bar.) Dieser Generator zeigt, wie die moglicherweise von vorhergehenden Generatoren erstellte Konfiguration ausser Kraft gesetzt wird. In Bash-Code ware es einfacher, wir haben es aber in Python geschrieben, um zu zeigen, dass das moglich ist und als Vorlage fur noch interessantere Generatoren. """ import os import pathlib def rearrange_bin_sbin(path): """Sicherstellen, dass alle Verzeichnispaare .../bin, .../sbin in dieser Reihenfolge sind >>> rearrange_bin_sbin('/bin:/sbin:/usr/sbin:/usr/bin') '/bin:/sbin:/usr/bin:/usr/sbin' """ items = [pathlib.Path(p) for p in path.split(':')] for i in range(len(items)): if 'sbin' in items[i].parts: ind = items[i].parts.index('sbin') bin = pathlib.Path(*items[i].parts[:ind], 'bin', *items[i].parts[ind+1:]) if bin in items[i+1:]: j = i + 1 + items[i+1:].index(bin) items[i], items[j] = items[j], items[i] return ':'.join(p.as_posix() for p in items) if __name__ == '__main__': path = os.environ['PATH'] # Dies sollte immer gesetzt sein . # Falls nicht, sturzen wir einfach ab, was auch i.O. ist. new = rearrange_bin_sbin(path) if new != path: print('PATH={}'.format(new)) Beispiel 3. Fehlersuche in einem Generator SYSTEMD_LOG_LEVEL=debug VAR_A=etwas VAR_B="etwas anderes" \ /usr/lib/systemd/system-environment-generators/pfad-zum-generator SIEHE AUCH systemd-environment-d-generator(8), systemd.generator(7), systemd(1), systemctl(1) ANMERKUNGEN 1. Bitte beachten Sie, dass diese Konfigurationsdateien zu allen Zeiten verfugbar sein mussen. Falls /usr/local/ eine separate Partition ist, konnte diese wahrend des fruhen Systemstarts nicht verfugbar sein und darf dann nicht fur Konfiguration verwandt werden. UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . systemd 260.2 SYSTEMD.ENVIRONMENT-GENERATOR(7)