Три вопроса отделяют спор о версии от расследования функции: какой компонент должен предоставлять опцию, какая версия этого компонента действительно установлена и что об этом говорит его журнал изменений. Один номер плагина не отвечает ни на один из них. Заманчивый короткий путь — сравнить сокращённую версию с минимумом из руководства — терпит неудачу, потому что строки версий дистрибутивов не являются десятичными числами. Решите, что вы сравниваете, прежде чем сравнивать.

Опция может жить в NetworkManager, в его VPN-плагине, в нижележащем движке или в отдельном интерфейсе рабочего стола. Это четыре проекта с четырьмя историями выпусков.

Четыре компонента, четыре истории выпусков

Редактор, который вы видите, обычно является плагином, а плагин вызывает движок вроде бинарного файла OpenVPN или реализации WireGuard. Сам NetworkManager предоставляет модель соединения, а интерфейс рабочего стола может добавить свои поля сверху. Функция может появиться в любом из них, и обновление одного не обновляет остальные. Более новый движок не является доказательством того, что установленный редактор умеет импортировать опцию, которую поддерживает движок.

Начните с симптома: поле отсутствует в диалоге, отсутствует после импорта или присутствует, но игнорируется? Эти наблюдения указывают на разные компоненты и требуют разных доказательств.

Разберите версию, прежде чем её сравнивать

Политика пакетов Debian определяет формат как epoch, версию upstream и ревизию упаковки. Сначала сравнивается epoch, затем часть upstream, затем ревизия, по собственным правилам упорядочивания менеджера пакетов, а не по десятичной арифметике или простой алфавитной сортировке. Тильда упорядочивается раньше всего, включая конец этой части, и именно так кандидат в выпуск предшествует окончательному выпуску. Отдельное чтение частей — то, что делает сравнение осмысленным.

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

Спросите, что установлено и что было бы

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

Затем прочитайте соответствующий журнал изменений. Ревизия упаковки может нести патчи, не принимая новый номер upstream, и это именно тот случай, когда версия выглядит неизменной, а поведение отличается.

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

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

Если поддерживаемая сборка для этого выпуска не содержит интеграции, выберите одобренный путь обновления или другого клиента. Смешивание репозитория другого выпуска или применение архивного патча исходного кода, чтобы поднять видимый номер, меняет спор о версии на неподдерживаемую систему.

Полезный отчёт называет дистрибутив, полные версии пакетов, владельца активного соединения, требуемую опцию и наблюдаемое сохранённое поведение. Это воспроизводимый вопрос.

Похожие статьи