Поправка на записот за автоматско стартување на VPN што работи само на една работна површина
VPN-стартувач што се стартува на една работна површина, а не на друга, е филтер во записот на работната површина, а не дефект на тунелот. Прво прочитајте OnlyShowIn, TryExec и презапишувањето.
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 патека. Ако е присутен, стартувачот работел и иконата што недостасува е одделен проблем со поддршката за индикаторот на панелот, а не со записот што штотуку го уредивте.
Забележете ги трите набљудувања во тикетот: стартувано, видливо, поврзано. Тој запис спречува следниот човек да ја повтори истата тристрана конфузија и покажува на кој слој му треба уште работа.