إصلاح مدخل تشغيل تلقائي لـ 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 قديم. إذا كانت موجودة، فقد نجح المشغّل وصار غياب الأيقونة مشكلة منفصلة في دعم المؤشّر لدى اللوحة، لا في المدخل الذي حرّرته للتو.
سجّل الملاحظات الثلاث في التذكرة: انطلق، مرئي، متصل. ذلك السجل يمنع الشخص التالي من تكرار الالتباس الثلاثي نفسه، ويوضّح أي طبقة ما زالت تحتاج عملًا.