Các mục menu bị thiếu và các tùy chọn biến mất được sửa bằng cùng một phản xạ, nhưng đây là những vấn đề không liên quan. Một cái là tích hợp màn hình nền, cái kia là trạng thái ứng dụng, và một biểu tượng mới không tự nó thay đổi cả hai. Tách hai thứ này cần một thử nghiệm và giải thích phần lớn sự nhầm lẫn mà mọi người mang đến chủ đề này. Trình khởi chạy khởi động một chương trình; chương trình quyết định những gì nó ghi nhớ.

Hai công việc chỉ trông giống một

Tích hợp màn hình nền nghĩa là môi trường có thể tìm thấy tệp thực thi, hiển thị tên và biểu tượng và truyền các đối số đúng. Trạng thái ứng dụng nghĩa là chương trình ghi một hồ sơ ở nơi lâu bền và đọc lại nó trong lần khởi động tiếp theo. Không cái nào bao hàm cái kia, vì vậy một lối tắt đang hoạt động vẫn có thể khởi động một ứng dụng khách đã quên hết mọi thứ.

Thay đổi một tùy chọn hiển thị vô hại thông qua chính các điều khiển của ứng dụng, sau đó đóng và mở lại theo cùng một cách. Nếu tùy chọn quay trở lại, việc lưu trữ hoạt động và phần khiếu nại còn lại là về việc tìm cửa sổ chứ không phải lưu dữ liệu. Nếu nó biến mất, lối tắt chỉ là thứ gây xao nhãng và câu hỏi thật là tiến trình đó giữ các tệp của nó ở đâu. Hãy thử từng tùy chọn một, vì một ứng dụng khách hỏi lại mật khẩu có thể đang bảo vệ một bí mật chứ không phải đang mất cấu hình.

So sánh các đầu vào khởi chạy trước khi cài đặt lại

Hãy bắt đầu từ mục trên màn hình nền và đọc xem nó thực sự làm gì, vì việc khởi chạy từ menu không tự động là cùng một môi trường tiến trình như khởi chạy từ terminal. Các khóa quan trọng là Exec, Path và gián tiếp là môi trường mà phiên cung cấp. Một tập lệnh bao bọc trong Exec có thể đặt một biến, đổi thư mục hoặc gọi một trình trợ giúp có đặc quyền mà menu không bao giờ hiển thị. Cài đặt lại thay thế các tệp mà ứng dụng đã có, và đó hiếm khi là biến đã thay đổi.

grep -h '^Exec=' ~/.local/share/applications/*.desktop
desktop-file-validate ~/.local/share/applications/client.desktop

Hãy xem tệp trong ~/.local/share/applications trước tệp trong /usr/share/applications, vì bản sao của người dùng che khuất bản sao của hệ thống. Chạy desktop-file-validate khi mục này hoạt động sai, và tìm một bản sao cũ vẫn trỏ đến một đường dẫn đã bị xóa. Phần lớn màn hình nền vẫn ưu tiên bản sao người dùng không hợp lệ, vì vậy một tệp hỏng có thể xóa mục khỏi menu trong khi tệp của gói vẫn hợp lệ. Sau đó chạy cùng lệnh bằng tay và so sánh những gì hai lần khởi chạy tạo ra.

Tùy chọn thực sự sống ở đâu

Các ứng dụng tuân theo quy tắc thư mục cơ sở XDG đặt cấu hình dưới $XDG_CONFIG_HOME, trạng thái lâu bền dưới $XDG_STATE_HOME và dữ liệu dùng một lần dưới $XDG_CACHE_HOME, đồng thời mặc định dùng ~/.config, ~/.local/state và ~/.cache khi các biến đó chưa được đặt. Ba thứ này là vai trò chứ không phải lời hứa, nên một sản phẩm VPN cụ thể có thể ghi chép điều hoàn toàn khác. Đọc tài liệu của chính nhà cung cấp tốt hơn là đoán đường dẫn từ tên thư mục. Khi tài liệu mỏng, hãy quan sát tiến trình thay vì hệ thống tệp.

Một bản theo dõi được lọc theo thao tác mở tệp sẽ hiển thị mọi đường dẫn cấu hình mà ứng dụng khách thử, kể cả đường dẫn nó ghi khi thoát. Hãy chạy nó với cùng người dùng và cùng môi trường, sau đó so sánh các đường dẫn đó với những thư mục bạn mong đợi.

strace -f -e trace=openat,stat -o /tmp/vpn.log vpn-client

Bí mật và hồ sơ có chủ sở hữu khác nhau

Một hồ sơ đã lưu và một thông tin xác thực đã lưu là hai đối tượng riêng biệt, thường có kho lưu riêng. Một cái có thể sống trong tệp cấu hình trong khi cái kia nằm trong một móc khóa được mở mỗi phiên, nên ứng dụng khách hỏi lại mật khẩu có thể chỉ đang làm đúng việc nó được thiết kế để làm. Xóa hồ sơ để dừng lời nhắc là cách mọi người đánh mất một cấu hình đang hoạt động.

Các lần khởi chạy có đặc quyền làm việc này phức tạp hơn, vì khởi chạy qua sudo hoặc một trình trợ giúp PolicyKit có thể trình bày một thư mục chính khác và do đó một bộ cấu hình khác. Hãy sửa quyền sở hữu trên tệp cụ thể mà ứng dụng ghi chép chứ không phải đệ quy trên toàn bộ thư mục chính, sau đó quyết định danh tính nào nên sở hữu hồ sơ từ nay và giữ các lần khởi chạy sau nhất quán với nó.

Biểu tượng có thể và không thể cho bạn biết điều gì

Một biểu tượng chứng minh rằng một tệp khởi chạy được phân giải, và không hơn thế. Trạng thái kết nối thuộc về ứng dụng khách, vì vậy kiểm tra đáng tin cậy duy nhất là giao diện, tuyến đường hoặc chính đầu ra trạng thái của ứng dụng khách. Một tiểu ứng dụng khay không khởi động được có thể khiến một đường hầm đang hoạt động trông như hỏng, trong khi một tiểu ứng dụng cũ có thể khiến một đường hầm hỏng trông ổn. Hãy kiểm tra kết nối và trình khởi chạy riêng rẽ, sau đó ghi lại cái nào bạn thực sự đã sửa.

Nếu cả hai đều hỏng, hãy cưỡng lại việc coi việc sửa chữa là một thay đổi duy nhất. Sửa mục, xác nhận việc khởi chạy, sau đó xác nhận đường hầm và ghi lại kết quả của từng bước. Bản ghi đó là thứ khiến báo cáo tiếp theo về cài đặt bị mất có thể chẩn đoán được thay vì lặp lại báo cáo này, và nó cũng cho người tiếp theo biết nửa nào của vấn đề là thật.

Bài viết liên quan