Чому новий ярлик VPN не повертає втрачені налаштування
Запускач вирішує, як стартує програма, а не де вона зберігає свої налаштування. Порівняйте контекст виконуваного файлу, користувача й конфігурації, перш ніж звинувачувати іконку.
Відсутні пункти меню і зникаючі налаштування виправляють одним і тим самим рефлексом, хоча це не пов’язані проблеми. Одне — інтеграція з робочим столом, інше — стан застосунку, і нова іконка сама по собі не змінює ні того, ні того. Розділити їх коштує одного експерименту й пояснює більшу частину плутанини, яку люди приносять у цю тему. Запускач запускає програму; програма вирішує, що вона пам’ятає.
Дві задачі, що лише здаються однією
Інтеграція з робочим столом означає, що середовище може знайти виконуваний файл, показати назву й іконку та передати правильні аргументи. Стан застосунку означає, що програма записує профіль у надійному місці й читає його під час наступного запуску. Жодне не передбачає іншого, тому робочий ярлик може запустити клієнт, який усе забув.
Змініть одне нешкідливе налаштування вигляду через власні елементи керування застосунку, потім закрийте й відкрийте його тим самим способом. Якщо налаштування повертається, збереження працює, а решта скарги стосується пошуку вікна, а не збереження даних. Якщо воно зникає, ярлик — це відволікання, і справжнє питання в тому, де цей процес тримає свої файли. Перевіряйте по одному налаштуванню за раз, бо клієнт, який знову просить пароль, може захищати таємницю, а не втрачати конфігурацію.
Порівняйте вхідні дані запуску перед перевстановленням
Почніть із запису робочого столу й прочитайте, що він насправді робить, бо запуск із меню не обов’язково те саме середовище процесу, що запуск із термінала. Важливі ключі — Exec, Path і побіжно середовище, яке надає сеанс. Скрипт-обгортка в Exec може задати змінну, змінити каталог або викликати привілейованого помічника, якого меню ніколи не показує. Перевстановлення замінює файли, які застосунок уже мав, і це рідко та змінна, що змінилася.
grep -h '^Exec=' ~/.local/share/applications/*.desktop
desktop-file-validate ~/.local/share/applications/client.desktop
Погляньте на файл у ~/.local/share/applications раніше, ніж на той, що в /usr/share/applications, бо користувацька копія затіняє системну. Запустіть desktop-file-validate, коли запис поводиться неправильно, і пошукайте застарілу копію, яка досі вказує на видалений шлях. Неправильна користувацька копія все ще переважає на більшості робочих столів, тож зламаний файл може прибрати запис із меню, поки файл пакета залишається чинним. Потім виконайте ту саму команду вручну й порівняйте, що дають обидва запуски.
Де насправді живе налаштування
Застосунки, які дотримуються правил базових каталогів XDG, розміщують конфігурацію в $XDG_CONFIG_HOME, постійний стан у $XDG_STATE_HOME, а одноразові дані в $XDG_CACHE_HOME, і типово використовують ~/.config, ~/.local/state і ~/.cache, коли ці змінні не задані. Ці три — ролі, а не обіцянки, тож конкретний продукт VPN може документувати щось зовсім інше. Читати документацію самого постачальника краще, ніж вгадувати шлях із назви каталогу. Коли документація бідна, спостерігайте за процесом, а не за файловою системою.
Трасування, відфільтроване за відкриттями файлів, показує кожен шлях конфігурації, який пробує клієнт, включно з тим, який він записує на виході. Запустіть його від того самого користувача в тому самому середовищі, потім порівняйте ці шляхи з каталогами, яких ви очікували.
strace -f -e trace=openat,stat -o /tmp/vpn.log vpn-client
Секрети й профілі мають різних власників
Збережений профіль і збережені облікові дані — окремі об’єкти, часто з окремим сховищем. Одне може жити у файлі конфігурації, поки інше сидить у зв’язці ключів, що розблоковується на сеанс, тож клієнт, який знову просить пароль, може просто робити те, для чого його створено. Видалення профілю, щоб зупинити запит, — це спосіб, яким люди втрачають робочу конфігурацію.
Привілейовані запуски ускладнюють це ще більше, бо запуск через sudo або помічник PolicyKit може показати інший домашній каталог і, отже, інший набір конфігурації. Виправте власника конкретного файлу, який документує застосунок, а не рекурсивно по всьому домашньому каталогу, потім вирішіть, який обліковий запис має володіти профілем надалі, і тримайте майбутні запуски узгодженими з ним.
Що іконка може сказати вам, а що ні
Іконка доводить, що файл запускача розв’язується, і нічого більше. Стан з’єднання належить клієнтові, тож єдина надійна перевірка — це інтерфейс, маршрут або власний вивід стану клієнта. Аплет лотка, який не запустився, може змусити робочий тунель виглядати зламаним, а застарілий аплет — змусити зламаний виглядати справним. Перевіряйте з’єднання й запускач окремо, а потім запишіть, що саме ви полагодили.
Якщо обидва були зламані, спротивтеся спокусі вважати виправлення однією зміною. Виправте запис, підтвердьте запуск, потім підтвердьте тунель і запишіть результат кожного кроку. Саме цей запис робить наступний звіт про втрачені налаштування діагностованим, а не повторенням цього, і він же каже наступній людині, яка половина проблеми була справжньою.