Залежності між налаштуваннями
Два поля в базі знань містять логіку замість даних, і вони відповідають на два різні запитання. Сплутати їх — саме та помилка, якій покликана запобігти ця сторінка.
available визначає, чи є налаштування рядком, до якого користувач узагалі може дістатися. default-value визначає, яке значення йому задано, — не один раз, а щоразу, коли змінюється щось, назване в його виразі.
Параметр, який неможливо вибрати
Розділ «Параметр, який неможливо вибрати»Налаштування, вираз available якого хибний, не відображається. Діалогове вікно будується з доступних налаштувань, тож рядка просто немає, а до інструкції над списком додається примітка про те, скільки налаштувань бракує й де про них можна прочитати.
Воно не зникає безслідно. Текст довідки діалогового вікна перелічує кожне недоступне налаштування цього вікна під окремим заголовком — із повним описом і ще одним рядком, у якому наведено власну умову available цього налаштування без зворотних апострофів:
=== Condition of availability: === <the expression>Втрата доступності сама собою не означає втрати значення. Рушій вимикає недоступне налаштування рівно в одному місці: коли користувач підтверджує діалогове вікно, серед рядків цього вікна, для налаштування, доступність якого користувач щойно прибрав власною зміною в цьому вікні. Налаштування, яке стає недоступним через дію користувача в іншому діалоговому вікні, зберігає те значення, яке мало раніше, і більше ніде не присутнє як рядок, тож там із ним уже ніщо не взаємодіятиме.
Саме для цього й потрібне друге поле, і саме тому обидва поля так часто використовують разом.
Параметр, який слідує за іншим
Розділ «Параметр, який слідує за іншим»Значення default-value може бути виразом, і такий вираз — не резервний варіант. Щоразу, коли змінюється налаштування, назване в ньому, рушій обчислює його заново й застосовує результат — поверх значення, яке користувач вибрав вручну, якщо вираз тепер дає саме це. Рушій не записує, хто задав значення, тож йому немає чому поступатися. Лише літеральне значення default-value поводиться як початкове значення, і після цього його не чіпають.
Результат поширюється далі: його застосування може змінити налаштування, назване в третьому виразі, який, своєю чергою, теж обчислюється. Ніщо в рушії не знає про жодне конкретне налаштування; увесь ланцюжок міститься в даних.
Діалогове вікно вибору файлової системи: повний розбір
Розділ «Діалогове вікно вибору файлової системи: повний розбір»ZFS потребує DKMS, а на ядрі, яке вже випередило те, що підтримує OpenZFS, DKMS не може виконати збирання. Тому Ditana поєднує ZFS з ядром із довгостроковою підтримкою, і для цього потрібні обидва поля:
- name="zfs-filesystem" \ available="`install-standard-lts-kernel`" \ default-value="`install-standard-lts-kernel AND NOT profile-quick`" { // ... }Рядок available — це шлюз. Вибір іншого ядра не переносить ZFS на ядро LTS і не залишає ZFS працювати на ядрі, для якого її неможливо зібрати: рядок ZFS зникає з діалогового вікна вибору файлової системи, і пара зберігається, бо стан без пари — не той, який користувач може вибрати.
Для цього налаштування довідка в діалоговому вікні вибору файлової системи, якщо встановлення відбувається не з ядром із довгостроковою підтримкою, каже:
=== Condition of availability: === install-standard-lts-kernelСаме рядок default-value змушує шлюз спрацьовувати з іншого діалогового вікна. Ядро вибирають у діалоговому вікні Kernel Selection, де ZFS не є рядком, тож правило, яке вимикає недоступне налаштування, до неї ніколи не доходить. ZFS вимикає саме та сама умова, названа в default-value, — і тому сорок п’ять налаштувань у базі знань мають вираз в обох полях. Ці два поля не є альтернативами.
- name="btrfs-filesystem" \ default-value="`profile-quick OR NOT install-standard-lts-kernel`" { arch-packages "btrfs-progs" "compsize" }Btrfs стає типовою файловою системою в діалоговому вікні вибору файлової системи щоразу, коли вибрано профіль Quick Installation або не вибрано ядро LTS. Ці два вирази — дві половини однієї умови, що доповнюють одна одну, тож у будь-який момент вибрано рівно одну файлову систему. Тому користувач, який змінює ядро з LTS на інше, повернувшись до діалогового вікна вибору файлової системи, бачить, що рядка ZFS немає, що вибрано Btrfs і що примітка над списком відсилає до довідки, де виведено умову, яка прибрала ZFS.
Ядро LTS спочатку вибране типово, тож у стандартному налаштуванні нічого з цього не видно: ZFS пропонується, і її вибір не змінює ядра, бо ядро вже правильне.
Що це означає для внеску
Розділ «Що це означає для внеску»Два поля відповідають на два запитання, і для зв’язку зазвичай потрібні відповіді на обидва. Чи має параметр узагалі сенс за цієї умови — це поле available, і воно прибирає рядок. Чи має параметр слідувати за цією умовою — це поле default-value, і воно змінює значення з будь-якого діалогового вікна. Шлюзу, умова якого вирішується в тому самому діалоговому вікні, достатньо самого available; шлюзу, умова якого визначається деінде, — ні, і це звичайний випадок.
Це машинний переклад. Читачі вдосконалюють його на Weblate.