ไคลเอนต์ 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 ที่ล้าสมัย หากมีอยู่ ตัวเรียกใช้ทำงานแล้ว และไอคอนที่หายไปเป็นปัญหาแยกต่างหากเกี่ยวกับการรองรับตัวบ่งชี้ของแผง ไม่ใช่รายการที่คุณเพิ่งแก้ไข

บันทึกการสังเกตสามข้อในตั๋ว: เริ่มแล้ว มองเห็น เชื่อมต่อแล้ว บันทึกนั้นป้องกันไม่ให้คนถัดไปทำความสับสนสามทางเดิมซ้ำ และทำให้ชัดเจนว่าชั้นใดยังต้องทำงาน

บทความที่เกี่ยวข้อง