Dlaczego nowy skrót VPN nie przywraca utraconych ustawień
Program uruchamiający decyduje, jak startuje aplikacja, a nie gdzie przechowuje swoje preferencje. Porównaj kontekst pliku wykonywalnego, użytkownika i konfiguracji, zanim obwinisz ikonę.
Brakujące wpisy menu i znikające preferencje naprawia się tym samym odruchem, a to niepowiązane problemy. Jedno to integracja z pulpitem, drugie to stan aplikacji, a nowa ikona sama nie zmienia żadnego z nich. Rozdzielenie ich kosztuje jeden eksperyment i wyjaśnia większość zamieszania, jakie ludzie przynoszą do tego tematu. Program uruchamiający startuje aplikację; to aplikacja decyduje, co pamięta.
Dwa zadania, które tylko wyglądają jak jedno
Integracja z pulpitem oznacza, że środowisko potrafi znaleźć plik wykonywalny, pokazać nazwę i ikonę oraz przekazać właściwe argumenty. Stan aplikacji oznacza, że program zapisuje profil w trwałym miejscu i odczytuje go przy następnym starcie. Żadne nie wynika z drugiego, dlatego działający skrót może uruchomić klienta, który wszystko zapomniał.
Zmień jedną nieszkodliwą preferencję wyświetlania za pomocą własnych kontrolek aplikacji, a potem zamknij ją i otwórz ponownie w ten sam sposób. Jeśli preferencja wróci, trwałość działa, a pozostała skarga dotyczy znalezienia okna, nie zapisywania danych. Jeśli zniknie, skrót jest rozproszeniem, a prawdziwym pytaniem jest, gdzie ten proces trzyma swoje pliki. Testuj jedną preferencję naraz, bo klient, który ponownie prosi o hasło, może chronić sekret, a nie tracić konfigurację.
Porównaj dane startowe przed ponowną instalacją
Zacznij od wpisu na pulpicie i przeczytaj, co naprawdę robi, bo uruchomienie z menu nie jest automatycznie tym samym środowiskiem procesu co uruchomienie z terminala. Klucze, które mają znaczenie, to Exec, Path i pośrednio środowisko udostępniane przez sesję. Skrypt opakowujący w Exec może ustawić zmienną, zmienić katalog lub wywołać uprzywilejowanego pomocnika, którego menu nigdy nie pokazuje. Ponowna instalacja zastępuje pliki, które aplikacja już miała, i to rzadko jest ta zmienna, która się zmieniła.
grep -h '^Exec=' ~/.local/share/applications/*.desktop
desktop-file-validate ~/.local/share/applications/client.desktop
Spójrz na plik w ~/.local/share/applications przed tym w /usr/share/applications, bo kopia użytkownika zasłania kopię systemową. Uruchom desktop-file-validate, gdy wpis zachowuje się źle, i poszukaj nieaktualnej kopii, która wciąż wskazuje na usuniętą ścieżkę. Nieprawidłowa kopia użytkownika jest nadal preferowana przez większość pulpitów, więc uszkodzony plik może usunąć wpis z menu, podczas gdy plik pakietu pozostaje prawidłowy. Potem uruchom to samo polecenie ręcznie i porównaj, co dają oba starty.
Gdzie preferencja naprawdę mieszka
Aplikacje, które stosują zasady katalogów bazowych XDG, umieszczają konfigurację w $XDG_CONFIG_HOME, trwały stan w $XDG_STATE_HOME, a dane jednorazowe w $XDG_CACHE_HOME, i domyślnie używają ~/.config, ~/.local/state oraz ~/.cache, gdy te zmienne nie są ustawione. Te trzy to role, a nie obietnice, więc konkretny produkt VPN może dokumentować coś zupełnie innego. Czytanie dokumentacji samego dostawcy jest lepsze niż zgadywanie ścieżki z nazwy katalogu. Gdy dokumentacja jest skąpa, obserwuj proces, a nie system plików.
Ślad filtrowany po otwarciach plików pokazuje każdą ścieżkę konfiguracji, której próbuje klient, w tym tę, którą zapisuje przy wyjściu. Uruchom go jako ten sam użytkownik w tym samym środowisku, a następnie porównaj te ścieżki z katalogami, których oczekiwałeś.
strace -f -e trace=openat,stat -o /tmp/vpn.log vpn-client
Sekrety i profile mają różnych właścicieli
Zapisany profil i zapisane dane logowania to odrębne obiekty, często z odrębnym magazynem. Jeden może mieszkać w pliku konfiguracji, podczas gdy drugi siedzi w pęku kluczy odblokowywanym na sesję, więc klient, który ponownie prosi o hasło, może po prostu robić to, do czego został zaprojektowany. Usunięcie profilu, aby zatrzymać pytanie, to sposób, w jaki ludzie tracą działającą konfigurację.
Uruchomienia z uprawnieniami dodatkowo to komplikują, bo start przez sudo lub pomocnika PolicyKit może przedstawić inny katalog domowy i tym samym inny zestaw konfiguracji. Popraw własność konkretnego pliku, który dokumentuje aplikacja, a nie rekurencyjnie w całym katalogu domowym, potem zdecyduj, która tożsamość ma odtąd posiadać profil, i utrzymuj przyszłe uruchomienia z nią spójne.
Co ikona może ci powiedzieć, a czego nie
Ikona dowodzi, że plik uruchamiający się rozwiązuje, i nic więcej. Stan połączenia należy do klienta, więc jedynym wiarygodnym testem jest interfejs, trasa lub własne wyjście statusu klienta. Aplet zasobnika, który się nie uruchomił, może sprawić, że działający tunel wygląda na zepsuty, a nieaktualny aplet może sprawić, że zepsuty wygląda dobrze. Testuj połączenie i program uruchamiający osobno, a potem zapisz, który z nich naprawdę naprawiłeś.
Jeśli oba były zepsute, oprzyj się traktowaniu naprawy jako jednej zmiany. Napraw wpis, potwierdź start, potem potwierdź tunel, i zapisz wynik każdego kroku. Ten zapis jest tym, co czyni następny raport o utraconych ustawieniach możliwym do zdiagnozowania zamiast powtórzeniem tego, i mówi też następnej osobie, która połowa problemu była prawdziwa.