Чаму новы ярлык VPN не вяртае страчаныя налады
Запускальнік вырашае, як пачынаецца праграма, а не дзе яна захоўвае налады. Параўнайце кантэкст выканальнага файла, карыстальніка і канфігурацыі, перш чым вінаваціць значок.
Адсутныя пункты меню і знікаючыя налады выпраўляюць адным і тым жа рэфлексам, але гэта незвязаныя праблемы. Адна — інтэграцыя з працоўным сталом, другая — стан праграмы, і новы значок сам па сабе не змяняе ні тую, ні другую. Каб раздзяліць іх, дастаткова аднаго эксперыменту, і гэта тлумачыць большую частку блытаніны, якую людзі прыносяць у гэтую тэму. Запускальнік запускае праграму; праграма вырашае, што яна памятае.
Дзве задачы, якія толькі выглядаюць як адна
Інтэграцыя з працоўным сталом значыць, што асяроддзе можа знайсці выканальны файл, паказаць назву і значок і перадаць правільныя аргументы. Стан праграмы значыць, што праграма запісвае профіль у надзейнае месца і чытае яго пры наступным запуску. Ні адно не вынікае з другога, таму працоўны ярлык можа запусціць кліент, які ўсё забыў.
Змяніце адну бясшкодную наладу выгляду праз уласныя сродкі праграмы, потым зачыніце і зноў адкрыйце яе тым жа спосабам. Калі налада вяртаецца, захаванне працуе, і рэшта скаргі тычыцца пошуку акна, а не захавання даных. Калі яна знікае, ярлык — адцягненне, і сапраўднае пытанне ў тым, дзе гэты працэс трымае свае файлы. Правярайце па адной наладзе за раз, бо кліент, які зноў пытае пароль, магчыма, абараняе сакрэт, а не губляе канфігурацыю.
Параўнайце ўваходныя даныя запуску перад пераўсталёўкай
Пачніце з запісу працоўнага стала і прачытайце, што ён насамрэч робіць, бо запуск з меню не аўтаматычна тое ж асяроддзе працэсу, што запуск з тэрмінала. Важныя ключы — Exec, Path і, ускосна, асяроддзе, якое дае сеанс. Скрыпт-абгортка ў Exec можа задаць зменную, змяніць каталог або выклікаць прывілеяваны памочнік, якога меню ніколі не паказвае. Пераўсталёўка замяняе файлы, якія праграма ўжо мела, а гэта рэдка бывае тая зменная, што змянілася.
grep -h '^Exec=' ~/.local/share/applications/*.desktop
desktop-file-validate ~/.local/share/applications/client.desktop
Паглядзіце на файл у ~/.local/share/applications раней, чым на той у /usr/share/applications, бо карыстальніцкая копія засланяе сістэмную. Запусціце desktop-file-validate, калі запіс паводзіць сябе не так, і шукайце састарэлую копію, якая ўсё яшчэ паказвае на выдалены шлях. Большасць працоўных сталоў усё яшчэ аддаюць перавагу няправільнай карыстальніцкай копіі, таму сапсаваны файл можа прыбраць запіс з меню, пакуль файл пакета застаецца правільным. Затым запусціце тую ж каманду ўручную і параўнайце, што даюць абодва запускі.
Дзе насамрэч жывуць налады
Праграмы, якія выконваюць правілы базавых каталогаў XDG, змяшчаюць канфігурацыю ў $XDG_CONFIG_HOME, надзейны стан — у $XDG_STATE_HOME, а аднаразовыя даныя — у $XDG_CACHE_HOME, па змаўчанні выкарыстоўваючы ~/.config, ~/.local/state і ~/.cache, калі гэтыя зменныя не зададзены. Гэтыя тры — ролі, а не абяцанні, таму пэўны прадукт VPN можа дакументаваць зусім іншае. Чытанне ўласнай дакументацыі пастаўшчыка лепш за здагадкі пра шлях па назве каталога. Калі дакументацыя бедная, назірайце за працэсам, а не за файлавай сістэмай.
Трасоўка, адфільтраваная па адкрыцці файлаў, паказвае кожны шлях канфігурацыі, які спрабуе кліент, уключаючы той, што ён запісвае пры выхадзе. Запусціце яе ад таго ж карыстальніка з тым жа асяроддзем, потым параўнайце гэтыя шляхі з каталогамі, якія вы чакалі.
strace -f -e trace=openat,stat -o /tmp/vpn.log vpn-client
Сакрэты і профілі маюць розных уладальнікаў
Захаваны профіль і захаваныя ўліковыя даныя — асобныя аб’екты, часта з асобным сховішчам. Адно можа жыць у файле канфігурацыі, пакуль другое сядзіць у звязцы ключоў, якая адмыкаецца на кожны сеанс, таму кліент, які зноў просіць пароль, проста робіць тое, для чаго быў створаны. Выдаленне профілю, каб спыніць запыт, — гэта тое, як людзі губляюць працоўную канфігурацыю.
Прывілеяваныя запускі ўскладняюць гэта яшчэ больш, бо запуск праз sudo або памочнік PolicyKit можа паказаць іншы хатні каталог і, такім чынам, іншы набор канфігурацыі. Выпраўце ўласніка на канкрэтным файле, які дакументуе праграма, а не рэкурсіўна па ўсім хатнім каталозе, потым вырашыце, якая асоба павінна валодаць профілем надалей, і трымайце будучыя запускі ў адпаведнасці з ёй.
Што значок можа і не можа сказаць
Значок даказвае, што файл запускальніка вырашаецца, і нічога больш. Стан злучэння належыць кліенту, таму адзіная надзейная праверка — гэта інтэрфейс, маршрут або ўласны вывад стану кліента. Праграма ў латку, якая не запусцілася, можа зрабіць працоўны тунель паламаным, а састарэлая праграма — зрабіць паламаны тунель спраўным. Праверце злучэнне і запускальнік асобна, потым запішыце, што менавіта вы выправілі.
Калі абодва былі паламаныя, супраціўляйцеся подступам лічыць рамант адной зменай. Выпраўце запіс, пацвердзіце запуск, потым пацвердзіце тунель і адзначце вынік кожнага кроку. Менавіта гэты запіс робіць наступную справаздачу пра страчаныя налады дыягнаставальнай, а не паўторам гэтай, і ён жа кажа наступнаму чалавеку, якая палова праблемы была сапраўднай.