Три питання відокремлюють суперечку про версію від розслідування функції: який компонент має надавати опцію, яка версія цього компонента справді встановлена і що про це каже його журнал змін. Один номер плагіна не відповідає на жодне з них. Спокусливий короткий шлях — порівняти скорочену версію з мінімумом із посібника — зазнає невдачі, бо рядки версій дистрибутивів не є десятковими числами. Вирішіть, що ви порівнюєте, перш ніж порівнювати.

Опція може жити в NetworkManager, у його VPN-плагіні, у базовому рушії або в окремому інтерфейсі робочого столу. Це чотири проєкти з чотирма історіями випусків.

Чотири компоненти, чотири історії випусків

Редактор, який ви бачите, зазвичай є плагіном, а плагін викликає рушій, наприклад бінарний файл OpenVPN або реалізацію WireGuard. Сам NetworkManager надає модель з'єднання, а інтерфейс робочого столу може додати свої поля зверху. Функція може з'явитися в будь-якому з них, і оновлення одного не оновлює інші. Новіший рушій не є доказом того, що встановлений редактор може імпортувати опцію, яку підтримує рушій.

Почніть із симптому: поле відсутнє в діалозі, відсутнє після імпорту чи присутнє, але ігнорується? Ці спостереження вказують на різні компоненти й потребують різних доказів.

Розберіть версію, перш ніж її порівнювати

Політика пакетів Debian визначає формат як epoch, версію upstream і ревізію пакування. Спочатку порівнюється epoch, потім частина upstream, потім ревізія, за власними правилами впорядкування менеджера пакетів, а не за десятковою арифметикою чи простим алфавітним сортуванням. Тильда впорядковується раніше за все, включно з кінцем цієї частини, і саме так кандидат у випуск передує остаточному випуску. Саме окреме читання частин робить порівняння осмисленим.

Не вигадуйте правило перетворення для якоїсь іншої схеми, у якій 0.8.999 виглядає близьким до 0.9. Близькість цифр не є доказом про зміст.

Запитайте, що встановлено і що було б

apt-cache policy повідомляє встановлену версію, кандидата й репозиторій, звідки походить кожен, для кожного пакета, який ви назвете. Читайте це і для рушія, і для плагіна та записуйте повні рядки, а не скорочені форми. Локальні метадані можуть застаріти, а версія-кандидат не доводить, що робочий процес завантажив цю збірку. Якщо службу не перезапускали після оновлення, файл на диску й спостережувана поведінка можуть розходитися.

Потім прочитайте відповідний журнал змін. Ревізія пакування може нести патчі, не приймаючи новий номер upstream, і це саме той випадок, коли версія виглядає незмінною, а поведінка відрізняється.

Доведіть опцію в компоненті-власнику

Для проблеми з імпортом перевірте підтримувані поля встановленого плагіна й збережений результат, а не лише діалог. Мітка, нативне поле даних і аргумент рушія можуть бути трьома поданнями одного налаштування, і успішний імпорт файлу нічого не каже про те, чи вижила кожна директива. Назвіть функцію точно: наприклад, прийняття цієї директиви зі збереженням її значення для автентифікації.

Якщо підтримувана збірка для цього випуску не має інтеграції, виберіть схвалений шлях оновлення або іншого клієнта. Змішування репозиторію іншого випуску або застосування архівного патча вихідного коду, щоб підняти видимий номер, обмінює суперечку про версію на непідтримувану систему.

Корисний звіт називає дистрибутив, повні версії пакетів, власника активного з'єднання, потрібну опцію й спостережувану збережену поведінку. Це відтворюване питання.

Схожі статті