একটি ডেস্কটপে কেবল চলে এমন 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 পথের জন্য। প্রক্রিটি থাকলে লঞ্চার কাজ করেছে এবং হারানো আইকন প্যানেলের সূচক সমর্থনের আলাদা সমস্যা, আপনি এইমাত্র সম্পাদনা করা এন্ট্রির নয়।
টিকিটে তিনটি পর্যবেক্ষণ লিখুন: চালু হয়েছে, দৃশ্যমান, সংযুক্ত। সেই রেকর্ড পরের ব্যক্তিকে একই ত্রিমুখী বিভ্রান্তি পুনরাবৃত্তি থেকে বিরত রাখে এবং কোন স্তরে এখনো কাজ বাকি তা স্পষ্ট করে।