Ret en VPN-autostartpost, der kun kører på én skrivebordssession
En VPN-starter, der starter på ét skrivebord og ikke på et andet, er et filter i skrivebordsposten, ikke en tunnefejl. Læs OnlyShowIn, TryExec og tilsidesættelsen først.
VPN-klienten starter fra programmenuen, tunnelen forbinder, og ikonet dukker aldrig op efter login på én maskine, mens den samme pakke opfører sig korrekt på en anden. Tre observationer smelter sammen til én klage: om programmet blev startet, om dets grænseflade er synlig, og om tunnelen er oppe. Starteren styres af en skrivebordspost med filtreringsnøgler, og den post har intet at gøre med VPN-protokollen. Følg vejledningen i rækkefølge, og stop når en af de tre ting skiller sig rent ud.
Tre adskilte fakta: start, ikon, tunnel
En skrivebordspost starter et program. Den kan ikke installere en bakkeimplementering, og den kan ikke få en indikator til at dukke op i et panel, der ikke understøtter den protokol, programmet bruger. Hvis processen allerede kører, er startspørgsmålet besvaret, og du kigger i stedet på et integrationsproblem.
Tunnelen er endnu et tredje faktum. Et manglende ikon er ikke bevis for, at forbindelsen faldt, og at dræbe og genstarte klienten for at »reparere« ikonet er netop måden, hvorpå en fungerende tunnel afbrydes uden grund. Brugere rapporterer det manglende ikon og den brudte tunnel i samme sætning, og derfor skal de to netop skilles ad på papiret.
Skil dem ad, før du ændrer noget. Kontroller, om processen findes, derefter om panelet understøtter indikatoren, og til sidst om grænsefladen rapporterer en forbindelse. Hvert svar peger på et andet lag og en anden ejer.
Find den post, som sessionen faktisk læser
Autostartposter ligger i brugerbiblioteket og i systembiblioteket, og når filnavnene er ens, vinder brugerkopien. At læse den forkerte er den mest almindelige årsag til, at en ændring ser ud til at have ingen virkning. List begge biblioteker, før du redigerer noget, og noter hvilken fil sessionen faktisk indlæser.
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
Miljøvariablen udskriver det sessionsnavn, som filtreringsnøglerne sammenlignes med, og det er normalt en kolonadskilt liste. Sammenlign den bogstaveligt med værdierne i posten, fordi disse navne er store og små bogstaver-følsomme konfigurationsdetaljer og ikke en beskrivelse af sessionen. En værdi GNOME matcher ikke gnome, og den resulterende tavshed har ingen fejlmeddelelse knyttet. Udskriv den i stedet for at antage den.
Hvis det samme filnavn findes i begge biblioteker, er det brugerkopien, der betyder noget. At redigere systemfilen og undre sig over, hvorfor intet ændrede sig, er en meget almindelig spildt time.
Læs filtreringsnøglerne, i rækkefølge
Den illustrative post nedenfor viser de nøgler, der afgør, om en session starter programmet. Det er et fragment, ikke en komplet starter, og værdierne tilhører en fiktiv sti.
[Desktop Entry] Type=Application Name=Example VPN Exec=/opt/example-vpn/client --minimized TryExec=/opt/example-vpn/client OnlyShowIn=GNOME;
OnlyShowIn begrænser posten til de anførte miljøer, og NotShowIn udelukker de anførte. Specifikationen definerer ikke nyttig adfærd, når begge optræder i én post, så behandl en fil med begge som en fejl i stedet for en smart kombination. Fjern den nøgle, du ikke har brug for, i stedet for at tilføje den anden og håbe på en forrangsregel.
TryExec spørger, om den eksekverbare fil findes, før sessionen starter den. En sti tilbage fra en ældre installation undertrykker derfor autostart, selvom den nye pakke virker, når den startes fra menuen, og den fejl ligner præcis et skrivebordsfilter.
Tilsidesæt på brugerniveau, ikke på systemniveau
Når filteret virkelig er forkert for denne maskine, skal du kopiere systemposten til brugerbiblioteket og ændre kopien. Efter XDG's autostartregler har en brugerpost med samme navn forrang, og Hidden=true deaktiverer en post uden at slette systemfilen.
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
Validér resultatet, før du logger ud, fordi en fejlbehæftet post ignoreres i stilhed, og den næste test ikke fortæller dig noget. Geninstallation af pakken fjerner ikke din tilsidesættelse, hvilket er pointen og også grunden til at notere, at den findes. Skriv filstien i billetten, så den næste person finder tilsidesættelsen i stedet for at udlede den igen.
Foretræk dette frem for at redigere delte systemstartere, som ændrer adfærd for hver bruger på maskinen og ikke kan gennemses på samme måde. En tilsidesættelse på brugerniveau er synlig ét sted, reversibel ved at slette én fil og let at forklare i en billet. Systemfilen forbliver, som leverandøren sendte den, så en pakkeopdatering ophæver ikke i stilhed din ræsonnering.
Bekræft starten uden at røre tunnelen
Log ud og ind igen, og bekræft derefter, at processen findes, før du ser på panelet. En vellykket start og et synligt ikon er to forskellige resultater, og kun det andet kræver arbejde med skrivebordsintegration. At blande dem sender dig ud i at geninstallere en pakke, der virkede hele tiden.
pgrep -af example-vpn systemctl --user status example-vpn.service journalctl --user -b --no-pager | grep -i example-vpn | tail -20
Hvis processen mangler, så læs posten igen for et resterende filter eller en forældet TryExec sti. Hvis den er til stede, virkede starteren, og det manglende ikon er et separat problem med panelets indikatorunderstøttelse, ikke med den post, du netop har redigeret.
Notér de tre observationer i billetten: startet, synlig, forbundet. Den registrering forhindrer den næste person i at gentage den samme tredobbelte forvirring og gør det klart, hvilket lag der stadig mangler arbejde.