Chybějící položky nabídky a mizející předvolby se opravují stejným reflexem, a přitom jde o nesouvisející problémy. Jeden je integrace s plochou, druhý je stav aplikace, a nová ikona sama o sobě nemění ani jedno. Rozdělit je vyžaduje jeden experiment a vysvětluje většinu zmatku, který lidé k tomuhle tématu přinášejí. Spouštěč spustí program; program rozhoduje, co si pamatuje.

Dvě práce, které vypadají jen jako jedna

Integrace s plochou znamená, že prostředí dokáže najít spustitelný soubor, zobrazit název a ikonu a předat správné argumenty. Stav aplikace znamená, že program zapíše profil na trvalé místo a při dalším spuštění ho zase načte. Ani jedno nevyplývá z druhého, a proto funkční zkratka může spustit klienta, který všechno zapomněl.

Změňte jednu neškodnou předvolbu zobrazení prostřednictvím vlastních ovládacích prvků aplikace, pak ji stejným způsobem zavřete a znovu otevřete. Pokud se předvolba vrátí, ukládání funguje a zbývající stížnost se týká hledání okna, ne ukládání dat. Pokud zmizí, zkratka je rozptýlení a skutečná otázka zní, kde ten proces drží své soubory. Testujte jednu předvolbu po druhé, protože klient, který znovu žádá heslo, možná chrání tajemství, a ne ztrácí konfiguraci.

Porovnejte vstupy spuštění před přeinstalací

Začněte u položky na ploše a přečtěte si, co skutečně dělá, protože spuštění z nabídky není automaticky stejné procesní prostředí jako spuštění z terminálu. Klíče, na kterých záleží, jsou Exec, Path a nepřímo prostředí, které poskytuje sezení. Obalový skript v Exec může nastavit proměnnou, změnit adresář nebo zavolat privilegovaného pomocníka, kterého nabídka nikdy neukáže. Přeinstalace nahrazuje soubory, které aplikace už měla, a to je zřídka ta proměnná, která se změnila.

grep -h '^Exec=' ~/.local/share/applications/*.desktop
desktop-file-validate ~/.local/share/applications/client.desktop

Podívejte se na soubor v ~/.local/share/applications dřív než na ten v /usr/share/applications, protože uživatelská kopie zastiňuje systémovou. Spusťte desktop-file-validate, když se položka chová špatně, a hledejte zastaralou kopii, která stále ukazuje na odstraněnou cestu. Neplatná uživatelská kopie je na většině ploch stále upřednostňována, takže poškozený soubor může položku z nabídky odstranit, zatímco soubor z balíčku zůstává platný. Pak stejný příkaz spusťte ručně a porovnejte, co obě spuštění vytvoří.

Kde předvolba skutečně žije

Aplikace, které dodržují pravidla základních adresářů XDG, ukládají konfiguraci do $XDG_CONFIG_HOME, trvalý stav do $XDG_STATE_HOME a jednorázová data do $XDG_CACHE_HOME, přičemž se standardně používají ~/.config, ~/.local/state a ~/.cache, když tyto proměnné nejsou nastaveny. Ty tři jsou role, ne sliby, takže konkrétní produkt VPN může dokumentovat něco úplně jiného. Čtení vlastní dokumentace dodavatele je lepší než hádání cesty z názvu adresáře. Když je dokumentace řídká, sledujte proces místo souborového systému.

Trasování filtrované na otevírání souborů ukazuje každou konfigurační cestu, kterou klient zkouší, včetně té, kterou zapisuje při ukončení. Spusťte ho jako stejný uživatel se stejným prostředím a pak tyto cesty porovnejte s adresáři, které jste očekávali.

strace -f -e trace=openat,stat -o /tmp/vpn.log vpn-client

Tajemství a profily mají různé vlastníky

Uložený profil a uložený údaj jsou oddělené objekty, často s odděleným úložištěm. Jeden může žít v konfiguračním souboru, zatímco druhý sedí v klíčence, která se odemyká pro sezení, takže klient, který znovu žádá heslo, možná jen dělá to, k čemu byl navržen. Smazání profilu, aby se zastavila výzva, je způsob, jakým lidé přijdou o funkční konfiguraci.

Privilegovaná spuštění to dál komplikují, protože spuštění přes sudo nebo pomocníka PolicyKit může představit jiný domovský adresář a tím i jinou sadu konfigurace. Opravte vlastnictví u konkrétního souboru, který aplikace dokumentuje, ne rekurzivně v celém domovském adresáři, pak rozhodněte, která identita má profil nadále vlastnit, a udržujte budoucí spuštění v souladu s ní.

Co vám ikona může a nemůže říct

Ikona dokazuje, že se soubor spouštěče vyřeší, a nic víc. Stav připojení patří klientovi, takže jediná spolehlivá kontrola je rozhraní, trasa nebo vlastní výstup stavu klienta. Aplet v oznamovací oblasti, který se nespustil, může způsobit, že funkční tunel vypadá rozbitý, zatímco zastaralý aplet může rozbitý tunel ukázat jako v pořádku. Testujte připojení a spouštěč odděleně a pak zapište, který z nich jste vlastně opravili.

Pokud bylo rozbité obojí, odolejte tomu brát opravu jako jednu změnu. Opravte položku, potvrďte spuštění, pak potvrďte tunel a zaznamenejte výsledek každého kroku. Právě tento záznam dělá z dalšího hlášení o ztracených nastaveních diagnostikovatelnou věc místo opakování tohoto, a také říká dalšímu člověku, která polovina problému byla skutečná.

Související články