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 път. Ако е налице, стартерът е сработил и липсващата икона е отделен проблем с поддръжката на индикатора в панела, а не със записа, който току-що редактирахте.

Запишете трите наблюдения в тикета: стартиран, видим, свързан. Този запис пречи на следващия човек да повтори същото тройно объркване и показва кой слой още се нуждае от работа.

Подобни статии