Недостасувачки записи во менито и исчезнувачки преференции се поправаат со истиот рефлекс, а тоа се неповрзани проблеми. Едното е интеграција со работната површина, другото е состојба на апликацијата, а новата икона сама по себе не менува ниту едно од двете. Нивното разделување бара еден експеримент и објаснува најголем дел од збунетоста што луѓето ја носат на оваа тема. Стартерот стартува програма; програмата одлучува што ќе запомни.

Две задачи што само изгледаат како една

Интеграцијата со работната површина значи дека околината може да најде извршна датотека, да прикаже име и икона и да ги пренесе вистинските аргументи. Состојбата на апликацијата значи дека програмата запишува профил на трајно место и го чита повторно при следното стартување. Ниту едното не го подразбира другото, затоа работата кратенка може да стартува клиент што сѐ заборавил.

Променете една безопасна преференција за приказ преку сопствените контроли на апликацијата, потоа затворете ја и отворете ја повторно на ист начин. Ако преференцијата се врати, трајното зачувување работи и остатокот од жалбата е за наоѓање на прозорецот, а не за зачувување податоци. Ако исчезне, кратенката е одвлекување внимание и вистинското прашање е каде тој процес ги чува своите датотеки. Тестирајте една преференција одеднаш, бидејќи клиент што повторно бара лозинка можеби штити тајна, а не губи конфигурација.

Споредете ги влезовите за стартување пред преинсталација

Започнете од записот на работната површина и прочитајте што навистина прави, бидејќи стартувањето од менито не е автоматски истата процесна околина како стартувањето од терминал. Клучевите што се важни се 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 помошник може да прикаже друг домашен директориум и затоа друг конфигурациски сет. Поправете ја сопственоста на конкретната датотека што апликацијата ја документира, наместо рекурзивно низ целиот домашен директориум, потоа одлучете кој идентитет треба да го поседува профилот оттука натаму и чувајте ги идните стартувања усогласени со него.

Што иконата може и што не може да ви каже

Иконата докажува дека стартер-датотеката се разрешува, и ништо повеќе. Состојбата на врската му припаѓа на клиентот, затоа единствената сигурна проверка е интерфејсот, рутата или самиот излез за статус на клиентот. Аплетот во системската лента што не се стартувал може да направи работен тунел да изгледа расипан, додека застарен аплет може да направи расипан да изгледа во ред. Тестирајте ја врската и стартерот одделно, потоа запишете што всушност поправивте.

Ако двете биле расипани, спротивставете се на искушението да го третирате поправката како една промена. Поправете го записот, потврдете го стартувањето, потоа потврдете го тунелот и забележете го резултатот од секој чекор. Токму тој запис го прави следниот извештај за изгубени поставки дијагностициран, наместо повторување на овој, и исто така му кажува на следниот човек која половина од проблемот била вистинска.

Поврзани статии