Кліент VPN запускаецца з меню праграм, тунель падключаецца, а значок так і не з'яўляецца пасля ўваходу на адной машыне, тады як той жа пакет паводзіць сябе інакш на другой. Тры назіранні зліваюцца ў адну скаргу: ці запусцілася праграма, ці бачны яе інтэрфейс і ці ўзняты тунель. Запускальнікам кіруе запіс працоўнага стала з ключамі фільтрацыі, і гэты запіс не мае нічога агульнага з пратаколам VPN. Прайдзіце інструкцыю па парадку і спыніцеся, калі адно з трох выразна аддзеліцца.

Тры асобныя факты: запуск, значок, тунель

Запіс працоўнага стала запускае праграму. Ён не можа ўсталяваць рэалізацыю сістэмнага лотка і не можа прымусіць індыкатар з'явіцца на панэлі, якая не падтрымлівае пратакол, што выкарыстоўвае праграма. Калі працэс ужо выконваецца, пытанне запуску закрыта, і вы маеце справу з праблемай інтэграцыі.

Тунель — гэта трэці факт. Адсутны значок не з'яўляецца доказам таго, што злучэнне абарвалася, і забойства ды перазапуск кліента, каб «паправіць» значок, — менавіта так працоўны тунель перарываецца без прычыны. Карыстальнікі паведамляюць пра адсутны значок і зламаны тунель адным сказам, і менавіта таму гэтыя дзве рэчы трэба раздзяліць на паперы.

Раздзяліце іх, перш чым нешта змяняць. Праверце, ці існуе працэс, затым ці падтрымлівае панэль індыкатар, і нарэшце ці паведамляе інтэрфейс пра злучэнне. Кожны адказ паказвае на іншы ўзровень і іншага адказнага.

Знайдзіце запіс, які сеанс сапраўды чытае

Запісы аўтазапуску знаходзяцца ў каталогу карыстальніка і ў сістэмным каталогу, і калі імёны файлаў супадаюць, перамагае копія карыстальніка. Чытанне не таго запісу — самая частая прычына таго, што змена выглядае без выніку. Пералічыце абодва каталогі, перш чым нешта рэдагаваць, і адзначце, які файл сеанс сапраўды загрузіць.

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

Зменная асяроддзя выводзіць імя сеансу, з якім параўноўваюцца ключы фільтрацыі, і гэта звычайна спіс, падзелены двукроп'ямі. Параўнайце яго літаральна са значэннямі ў запісе, бо гэтыя імёны — адчувальныя да рэгістру дэталі канфігурацыі, а не апісанне сеансу. Значэнне GNOME не супадае з gnome, і ўзніклая цішыня не мае паведамлення пра памылку. Выведзіце яго, а не мяркуйце.

Калі аднолькавае імя файла ёсць у абодвух каталогах, важная менавіта копія карыстальніка. Рэдагаванне сістэмнага файла і здзіўленне, чаму нічога не змянілася, — вельмі частая страчаная гадзіна.

Чытайце ключы фільтрацыі па парадку

Ілюстрацыйны запіс ніжэй паказвае ключы, якія вырашаюць, ці запусціць сеанс праграму. Гэта фрагмент, а не поўны запускальнік, і значэнні належаць выдуманаму шляху.

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

OnlyShowIn абмяжоўвае запіс пералічанымі асяроддзямі, а NotShowIn выключае пералічаныя. Спецыфікацыя не вызначае карысных паводзін, калі абодва з'яўляюцца ў адным запісе, таму лічыце файл з абодвума дэфектам, а не разумнай камбінацыяй. Выдаліце ключ, які вам не патрэбны, замест таго каб дадаваць другі і спадзявацца на правіла прыярытэту.

TryExec пытаецца, ці існуе выканальны файл, перш чым сеанс яго запусціць. Таму шлях, які застаўся ад старой усталёўкі, падаўляе аўтазапуск, нават калі новы пакет працуе пры запуску з меню, і гэтая няўдача выглядае дакладна як фільтр працоўнага стала.

Перакрыцце на ўзроўні карыстальніка, а не сістэмы

Калі фільтр сапраўды няправільны для гэтай машыны, скапіруйце сістэмны запіс у каталог карыстальніка і змяніце копію. Паводле правілаў аўтазапуску XDG, запіс карыстальніка з такім жа імем мае прыярытэт, а Hidden=true адключае запіс, не выдаляючы сістэмны файл.

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

Праверце вынік, перш чым выйсці з сістэмы, бо няправільны запіс моўчкі ігнаруецца, і наступны тэст вам нічога не скажа. Перавысталёўка пакета не выдаліць ваша перакрыцце — у гэтым і сэнс, і прычына запісаць, што яно існуе. Адзначце шлях да файла ў заяўцы, каб наступны чалавек знайшоў перакрыцце, а не выводзіў яго нанова.

Аддайце перавагу гэтаму перад рэдагаваннем агульных сістэмных запускальнікаў, якое змяняе паводзіны для кожнага карыстальніка машыны і не падлягае такой жа праверцы. Перакрыцце на ўзроўні карыстальніка бачнае ў адным месцы, адваротнае выдаленнем аднаго файла і лёгка тлумачыцца ў заяўцы. Сістэмны файл застаецца такім, якім яго паставіў вытворца, таму абнаўленне пакета не скасуе моўчкі вашыя развагі.

Пацвердзіце запуск, не кранаючы тунель

Выйдзіце з сістэмы і ўвайдзіце зноў, затым пацвердзіце, што працэс існуе, перш чым глядзець на панэль. Паспяховы запуск і бачны значок — два розныя вынікі, і толькі другі патрабуе працы над інтэграцыяй з працоўным сталом. Калі іх блытаць, вы пойдзеце перавысталёўваць пакет, які ўвесь гэты час працаваў.

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

Калі працэс адсутнічае, перачытайце запіс на прадмет пакінутага фільтра або таго, што шлях TryExec састарэў. Калі працэс прысутнічае, запускальнік спрацаваў, і адсутны значок — асобная праблема з падтрымкай індыкатара на панэлі, а не з запісам, які вы толькі што рэдагавалі.

Запішыце тры назіранні ў заяўку: запушчаны, бачны, падключаны. Гэты запіс не дазволіць наступнаму чалавеку паўтарыць тую ж трайную блытаніну і пакажа, які ўзровень яшчэ патрабуе працы.

Падобныя артыкулы