Wie Einstellungen voneinander abhängen
Zwei Felder in der Wissensbasis enthalten Logik statt Daten, und sie beantworten zwei verschiedene Fragen. Sie zu verwechseln, ist der Fehler, den diese Seite verhindern soll.
available entscheidet, ob eine Einstellung eine Zeile ist, die überhaupt erreichbar ist. default-value entscheidet, auf welchen Wert sie gesetzt wird – nicht einmal, sondern jedes Mal, wenn sich etwas ändert, das ihr Ausdruck nennt.
Eine Option, die nicht gewählt werden kann
Abschnitt «Eine Option, die nicht gewählt werden kann»Eine Einstellung, deren Ausdruck in available falsch ist, wird nicht dargestellt. Der Dialog wird aus den verfügbaren Einstellungen aufgebaut, daher ist die Zeile einfach nicht da, und die Anleitung über der Liste erhält einen Hinweis, wie viele Einstellungen fehlen und wo Sie darüber nachlesen können.
Sie verschwindet nicht spurlos. Der Hilfetext des Dialogs listet jede nicht verfügbare Einstellung dieses Dialogs unter einer eigenen Überschrift auf, mit ihrer vollständigen Beschreibung und einer weiteren Zeile, in der als Ausdruck die eigene Bedingung available dieser Einstellung steht, ohne die Backticks:
=== Condition of availability: === <the expression>Dass eine Einstellung nicht mehr verfügbar ist, bedeutet für sich genommen nicht, dass sie ihren Wert verliert. Die Engine schaltet eine nicht verfügbare Einstellung an genau einer Stelle aus: wenn die Benutzerin oder der Benutzer einen Dialog bestätigt, über die Zeilen dieses Dialogs hinweg, bei einer Einstellung, deren Verfügbarkeit sie oder er gerade durch eine eigene Änderung in diesem Dialog aufgehoben hat. Eine Einstellung, die durch etwas nicht mehr verfügbar wird, das die Benutzerin oder der Benutzer in einem anderen Dialog getan hat, behält den Wert, den sie zuvor hatte, und sie ist nirgends mehr als Zeile vorhanden, sodass dort nichts mehr auf sie einwirkt.
Dafür ist das zweite Feld da, und deshalb werden die beiden so oft zusammen verwendet.
Eine Option, die einer anderen folgt
Abschnitt «Eine Option, die einer anderen folgt»Das Feld default-value kann einen Ausdruck enthalten, und ein solcher Ausdruck ist keine Ausweichlösung. Immer wenn sich eine Einstellung ändert, die er nennt, wertet die Engine ihn neu aus und wendet das Ergebnis an – auch anstelle eines Werts, den die Benutzerin oder der Benutzer von Hand gewählt hat, wenn der Ausdruck jetzt das ergibt. Die Engine hält nicht fest, wer einen Wert gesetzt hat, und hat daher nichts, dem sie den Vorrang lassen könnte. Nur ein fester Wert in default-value verhält sich wie ein Startwert und bleibt danach unangetastet.
Das Ergebnis pflanzt sich fort: Seine Anwendung kann eine Einstellung ändern, die ein dritter Ausdruck nennt, der dann seinerseits ausgewertet wird. Nichts in der Engine weiss von einer bestimmten Einstellung; die ganze Kette steckt in den Daten.
Der Dateisystem-Dialog im Ganzen
Abschnitt «Der Dateisystem-Dialog im Ganzen»ZFS braucht DKMS, und DKMS kann auf einem Kernel, der über das hinaus fortgeschritten ist, was OpenZFS unterstützt, nicht bauen. Ditana koppelt ZFS deshalb an den Kernel mit Langzeitunterstützung, und dafür braucht es beide Felder:
- name="zfs-filesystem" \ available="`install-standard-lts-kernel`" \ default-value="`install-standard-lts-kernel AND NOT profile-quick`" { // ... }Die Zeile available ist die Schranke. Die Wahl eines anderen Kernels verschiebt ZFS nicht auf den LTS-Kernel und lässt ZFS auch nicht auf einem Kernel laufen, gegen den es nicht gebaut werden kann: Die ZFS-Zeile fehlt im Dateisystem-Dialog, und die Kopplung hält, weil sich ein Zustand ohne diese Kopplung gar nicht auswählen lässt.
Für diese Einstellung sagt die Hilfe im Dateisystem-Dialog einer Installation, die nicht den Kernel mit Langzeitunterstützung verwendet:
=== Condition of availability: === install-standard-lts-kernelDie Zeile default-value sorgt dafür, dass die Schranke auch von einem anderen Dialog aus greift. Der Kernel wird im Dialog Kernel Selection gewählt, in dem ZFS keine Zeile ist; die Regel, die eine nicht verfügbare Einstellung ausschaltet, erreicht ZFS deshalb nie. Erst die Nennung derselben Bedingung in default-value schaltet ZFS aus – und deshalb tragen fünfundvierzig Einstellungen in der Wissensbasis in beiden Feldern einen Ausdruck. Die beiden sind keine Alternativen.
- name="btrfs-filesystem" \ default-value="`profile-quick OR NOT install-standard-lts-kernel`" { arch-packages "btrfs-progs" "compsize" }Btrfs ist die Voreinstellung des Dateisystem-Dialogs, wann immer das Profil Quick Installation gewählt ist oder der LTS-Kernel nicht ausgewählt ist. Die beiden Ausdrücke sind komplementäre Hälften derselben Bedingung, sodass zu jedem Zeitpunkt genau ein Dateisystem gewählt ist. Wer den Kernel von LTS auf einen anderen umstellt, stellt deshalb bei der Rückkehr in den Dateisystem-Dialog fest, dass die ZFS-Zeile verschwunden ist, dass Btrfs gewählt ist und dass der Hinweis über der Liste auf die Hilfe verweist, in der die Bedingung ausgegeben wird, die ZFS entfernt hat.
Der LTS-Kernel ist von Anfang an voreingestellt, daher zeigt sich in einer Standardeinrichtung nichts davon: ZFS wird angeboten, und die Wahl von ZFS ändert keinen Kernel, da der Kernel bereits passt.
Was das für einen Beitrag bedeutet
Abschnitt «Was das für einen Beitrag bedeutet»Die beiden Felder beantworten zwei Fragen, und eine Beziehung braucht in der Regel beide Antworten. Ergibt die Option unter dieser Bedingung überhaupt Sinn – das ist available, und es entfernt die Zeile. Soll die Option dieser Bedingung folgen – das ist default-value, und es ändert den Wert, von jedem Dialog aus. Eine Schranke, deren Bedingung im selben Dialog entschieden wird, kommt mit available allein aus; eine Schranke, deren Bedingung anderswo liegt, nicht, und das ist der übliche Fall.
Diese Übersetzung wurde maschinell erstellt. Leserinnen und Leser verbessern sie auf Weblate.