Защо нов пряк път за 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 може да покаже друга домашна директория и следователно друг набор от конфигурация. Оправете собствеността върху конкретния файл, който приложението документира, вместо рекурсивно върху цяла домашна директория, след което решете коя идентичност трябва да притежава профила занапред и поддържайте бъдещите стартирания в съответствие с нея.
Какво иконата може и какво не може да ви каже
Иконата доказва, че файл на стартера се разрешава, и нищо повече. Състоянието на връзката принадлежи на клиента, затова единствената надеждна проверка е интерфейсът, маршрутът или собственият изход за състояние на клиента. Аплет в системния трей, който не е стартирал, може да направи работещ тунел да изглежда счупен, докато остарял аплет може да направи счупен да изглежда наред. Тествайте връзката и стартера отделно, след което запишете кое от двете всъщност сте поправили.
Ако и двете са били счупени, устоявайте на изкушението да третирате поправката като една промяна. Оправете записа, потвърдете стартирането, след това потвърдете тунела и отбележете резултата от всяка стъпка. Този запис е това, което прави следващия доклад за загубени настройки диагностицируем, вместо повторение на този, и също така казва на следващия човек коя половина от проблема е била истинска.