Зашто нова пречица 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 помоћника може да прикаже други кућни директоријум и тиме други скуп конфигурације. Исправите власништво на конкретној датотеци коју апликација документује, а не рекурзивно по целом кућном директоријуму, затим одлучите који идентитет треба да поседује профил убудуће и одржавајте будућа покретања усклађена с тим.
Шта икона може, а шта не може да вам каже
Икона доказује да се датотека покретача разрешава, и ништа више. Стање везе припада клијенту, зато је једина поуздана провера интерфејс, рута или сопствени излаз статуса клијента. Аплет у системској касети који се није покренуо може да учини да исправан тунел изгледа покварен, док застарео аплет може да учини да покварен изгледа исправан. Тестирајте везу и покретач одвојено, затим запишите који сте од њих заиста поправили.
Ако су обоје били покварени, одуприте се искушењу да поправку третирате као једну измену. Поправите ставку, потврдите покретање, затим потврдите тунел и забележите резултат сваког корака. Тај запис чини следећи извештај о изгубљеним поставкама дијагностикованим уместо понављањем овог, и такође каже следећој особи која половина проблема је била стварна.