VPN klientas paleidžiamas iš programų meniu, tunelis prisijungia, o piktograma niekada nepasirodo po prisijungimo viename kompiuteryje, tuo tarpu tas pats paketas kitame elgiasi tinkamai. Trys stebėjimai suplakami į vieną skundą: ar programa pasileido, ar jos sąsaja matoma ir ar tunelis pakeltas. Paleidiklį valdo darbalaukio įrašas su filtravimo raktais, ir tas įrašas neturi nieko bendra su VPN protokolu. Pereikite vadovą iš eilės ir sustokite, kai vienas iš trijų aiškiai atsiskiria.

Trys atskiri faktai: paleidimas, piktograma, tunelis

Darbalaukio įrašas paleidžia programą. Jis negali įdiegti dėklės realizacijos ir negali priversti indikatoriaus pasirodyti skydelyje, kuris nepalaiko programos naudojamo protokolo. Jei procesas jau veikia, paleidimo klausimas atsakytas ir jūs vietoj to žiūrite į integracijos problemą.

Tunelis vėl yra trečias faktas. Trūkstama piktograma nėra įrodymas, kad ryšys nutrūko, o kliento užmušimas ir paleidimas iš naujo, norint „pataisyti“ piktogramą, yra būtent tas būdas, kuriuo veikiantis tunelis be priežasties nutraukiamas. Naudotojai praneša apie trūkstamą piktogramą ir sulūžusį tunelį tame pačiame sakinyje, ir būtent todėl abu reikia atskirti popieriuje.

Atskirkite juos prieš ką nors keisdami. Patikrinkite, ar procesas egzistuoja, tada ar skydelis palaiko indikatorių, ir galiausiai ar sąsaja praneša apie ryšį. Kiekvienas atsakymas rodo į skirtingą sluoksnį ir skirtingą atsakingą asmenį.

Raskite įrašą, kurį sesija iš tikrųjų skaito

Automatinio paleidimo įrašai gyvena naudotojo kataloge ir sistemos kataloge, o kai failų pavadinimai sutampa, laimi naudotojo kopija. Neteisingo įrašo skaitymas yra dažniausia priežastis, kodėl pakeitimas atrodo be poveikio. Išvardykite abu katalogus prieš ką nors redaguodami ir užsirašykite, kurį failą sesija iš tikrųjų įkels.

ls -l ~/.config/autostart/ /etc/xdg/autostart/
echo "$XDG_CURRENT_DESKTOP"
grep -H -E '^(OnlyShowIn|NotShowIn|TryExec|Hidden|Exec)=' ~/.config/autostart/*.desktop /etc/xdg/autostart/*.desktop

Aplinkos kintamasis išspausdina sesijos pavadinimą, su kuriuo lyginami filtravimo raktai, ir tai paprastai dviem taškais atskirtas sąrašas. Palyginkite jį pažodžiui su įrašo reikšmėmis, nes tie pavadinimai yra didžiųjų ir mažųjų raidžių jautrūs konfigūracijos duomenys, o ne sesijos aprašymas. Reikšmė GNOME nesutampa su gnome, o dėl to atsirandanti tyla neturi jokio klaidos pranešimo. Išspausdinkite jį, o ne manykite.

Jei tas pats failo pavadinimas yra abiejuose kataloguose, svarbi naudotojo kopija. Sistemos failo redagavimas ir stebėjimasis, kodėl niekas nepasikeitė, yra labai dažna prarasta valanda.

Skaitykite filtravimo raktus, iš eilės

Toliau pateiktas iliustracinis įrašas rodo raktus, kurie nusprendžia, ar sesija paleis programą. Tai fragmentas, o ne visas paleidiklis, ir reikšmės priklauso išgalvotam keliui.

[Desktop Entry]
Type=Application
Name=Example VPN
Exec=/opt/example-vpn/client --minimized
TryExec=/opt/example-vpn/client
OnlyShowIn=GNOME;

OnlyShowIn apriboja įrašą išvardytomis aplinkomis ir NotShowIn neįtraukia išvardytų. Specifikacija neapibrėžia naudingo elgesio, kai abu pasirodo viename įraše, todėl failą su abiem laikykite defektu, o ne gudriu deriniu. Pašalinkite nereikalingą raktą, o ne pridėkite antrą ir tikėkitės prioriteto taisyklės.

TryExec klausia, ar vykdomasis failas egzistuoja, prieš sesijai jį paleidžiant. Todėl iš senesnės instalacijos likęs kelias slopina automatinį paleidimą, net jei naujas paketas veikia paleidus iš meniu, ir ta nesėkmė atrodo lygiai kaip darbalaukio filtras.

Perrašykite naudotojo lygmenyje, o ne sistemos

Kai filtras tikrai neteisingas šiam kompiuteriui, nukopijuokite sistemos įrašą į naudotojo katalogą ir pakeiskite kopiją. Pagal XDG automatinio paleidimo taisykles to paties pavadinimo naudotojo įrašas turi pirmenybę, o Hidden=true išjungia įrašą neištrindamas sistemos failo.

mkdir -p ~/.config/autostart
cp /etc/xdg/autostart/example-vpn.desktop ~/.config/autostart/
sed -i '/^OnlyShowIn=/d' ~/.config/autostart/example-vpn.desktop
desktop-file-validate ~/.config/autostart/example-vpn.desktop

Patikrinkite rezultatą prieš atsijungdami, nes netinkamai suformuotas įrašas tyliai ignoruojamas ir kitas testas jums nieko nepasakys. Paketo perdiegimas nepašalins jūsų perrašymo, tai ir yra tikslas, ir priežastis užsirašyti, kad jis egzistuoja. Užrašykite failo kelią biliete, kad kitas žmogus rastų perrašymą, o ne išvestų jį iš naujo.

Teikite pirmenybę tam, o ne bendrų sistemos paleidiklių redagavimui, kuris keičia elgesį kiekvienam kompiuterio naudotojui ir nėra peržiūrimas tuo pačiu būdu. Naudotojo lygmens perrašymas matomas vienoje vietoje, atšaukiamas ištrynus vieną failą ir lengvai paaiškinamas biliete. Sistemos failas lieka toks, kokį jį išsiuntė tiekėjas, todėl paketo atnaujinimas tyliai nepanaikina jūsų samprotavimo.

Patvirtinkite paleidimą neliesdami tunelio

Atsijunkite ir vėl prisijunkite, tada patvirtinkite, kad procesas egzistuoja, prieš žiūrėdami į skydelį. Sėkmingas paleidimas ir matoma piktograma yra du skirtingi rezultatai, ir tik antrajam reikia darbalaukio integracijos darbo. Sumaišius juos, einama perdiegti paketo, kuris visą laiką veikė.

pgrep -af example-vpn
systemctl --user status example-vpn.service
journalctl --user -b --no-pager | grep -i example-vpn | tail -20

Jei proceso nėra, perskaitykite įrašą ieškodami likusio filtro ar pasenusio TryExec kelio. Jei jis yra, paleidiklis veikė, o trūkstama piktograma yra atskira skydelio indikatoriaus palaikymo problema, o ne ką tik redaguoto įrašo.

Užrašykite tris stebėjimus biliete: paleista, matoma, prisijungta. Šis įrašas neleidžia kitam žmogui pakartoti tos pačios trigubos painiavos ir parodo, kuriam sluoksniui dar reikia darbo.

Susiję straipsniai