রিপো প্যাকেজ নাকি VPN ক্লায়েন্ট প্যাকেজ: কোনটি আগে আসে?
রিলিজ প্যাকেজ কেবল একটি সোর্স আর একটি সাইনিং কী নিবন্ধন করে। ভেন্ডরের রিপোজিটরি লাভজনক কিনা ঠিক করুন, তারপর ক্লায়েন্টটি আলাদা ধাপ হিসেবে ইনস্টল করুন।
আপনি ভেন্ডরের প্যাকেজ ইনস্টল করেন, কমান্ড শূন্য ফেরত দেয়, আর চালু করার মতো কোনো VPN অ্যাপ্লিকেশন তখনো নেই। এটি ঘটে যখন আপনার ইনস্টল করা প্যাকেজ ক্লায়েন্ট না দিয়ে একটি রিপোজিটরি কনফিগার করে, আর পার্থক্যটি দেখা যায় এটি ডিস্কে কী রেখেছে তাতে। আপনার দুটিই দরকার কি না এবং কোন ক্রমে, তা ভেন্ডরের নামকরণের বদলে তিনটি শর্তের উপর নির্ভর করে। নিচের সিদ্ধান্তটি সোর্স সেটআপ, মেটাডেটা রিফ্রেশ ও অ্যাপ্লিকেশন ইনস্টলকে আলাদা কাজ ও আলাদা প্রমাণ হিসেবে রাখে।
প্রতিটি প্যাকেজ আসলে কী বদলায়
রিপোজিটরি-কনফিগারেশন প্যাকেজ একটি APT সোর্স এন্ট্রি লেখে, সেই এন্ট্রি যে সাইনিং কী-তে ভরসা করে তা আমদানি করে, এবং শেষ হয়। /etc/apt এর পেলোড হলো একটি কীরিংসহ কয়েকটি ফাইল, আর চালানোর মতো কিছুই নেই। ক্লায়েন্ট প্যাকেজ ডেমন বা ডেস্কটপ অ্যাপ্লিকেশন, তার লাইব্রেরি ও নির্ভরতাগুলো দেয়, আর মেনু বা systemd ইউনিটে যে বস্তুটি শেষ পর্যন্ত থাকে সেটিই এই প্যাকেজ।
ফাইলের নামের শেষে -release থাকলে তা প্রথম ধরনটির ইঙ্গিত দেয়, তবে প্রত্যয়টি নিশ্চয়তা নয়, একটি রীতি। প্যাকেজের ভূমিকা সম্পর্কে নির্ভরযোগ্য বিবৃতি হলো তার ফাইল তালিকা ও নির্ভরতা, দুটিই কিছু ইনস্টল করার আগেই পড়া যায়। যে ভেন্ডর তার প্যাকেজিং নতুন করে সাজায় সে একই ফাইলের নাম রাখে ও বিষয়বস্তু বদলায়, তাই দুই বছরের পুরনো থ্রেড থেকে কপি করা উত্তর এমন প্যাকেজের বর্ণনা দিতে পারে যা আর নেই। আপনি যে রিলিজ চালান তার জন্য প্রদানকারীর বর্তমান নির্দেশনা পড়ুন, তারপর প্যাকেজ কী ঘোষণা করে তা যাচাই করুন।
সেই বিভাজন থেকে তিনটি ধাপ আসে: সোর্স নিবন্ধন করুন, এটি যে মেটাডেটা সরবরাহ করে তা রিফ্রেশ করুন, তারপর নাম ধরে অ্যাপ্লিকেশন ইনস্টল করুন। এর Debian ও Ubuntu ইনস্টল নির্দেশিকা সেগুলোকে আলাদা রাখে, তাই ক্লায়েন্ট পরের ধাপে চাওয়া হয়, যে প্যাকেজ সোর্স সেট করেছিল তার মাধ্যমে নয়।
ক্রম নির্ধারণ করে এমন তিনটি শর্ত
প্রথম শর্ত হলো ভেন্ডর আপনার ঠিক ডিস্ট্রিবিউশন রিলিজের জন্য রিপোজিটরি প্রকাশ করে কি না। একটি স্যুটের জন্য গড়া সোর্স লাইন অন্য স্যুটের নির্ভরতার সঙ্গে মিলে যেতে পারে এবং এমন মিশ্রণ ইনস্টল করতে পারে যা কেউ পরীক্ষা করেনি।
দ্বিতীয়টি হলো আপনার ডিস্ট্রিবিউশন ইতিমধ্যে ক্লায়েন্ট বহন করে কি না। যখন বহন করে, ডিস্ট্রো প্যাকেজ আপনার রিলিজের লাইব্রেরি রূপান্তর ও নিরাপত্তা হালনাগাদ অনুসরণ করে, অন্যদিকে ভেন্ডর প্যাকেজ দ্রুত এগোতে পারে এবং শেয়ার্ড লাইব্রেরির নিজস্ব কপি আনতে পারে।
তৃতীয়টি হলো আপনার আসলে কোন ফিচার দরকার। ভেন্ডর বিল্ড নতুনতর প্রোটোকল বাস্তবায়ন বা ডেস্কটপ ইন্টিগ্রেশন দিতে পারে যা আপনার ডিস্ট্রিবিউশন প্যাকেজ করেনি, আর এটি দ্বিতীয় সোর্স গ্রহণ করার বাস্তব কারণ। যদি ডিস্ট্রো বিল্ড আপনার ব্যবহার কভার করে, তৃতীয় পক্ষের রিপোজিটরি যোগ করা খুব অল্পের বিনিময়ে হালনাগাদের কাজ ও আরেকটি বিশ্বাস সম্পর্ক কিনে দেয়।
সোর্স লাইন তৈরি হওয়ার আগেই ওই তিন উত্তর স্থির করুন, কারণ পরে এটি সরানো মানে প্যাকেজ ও তার কী পরিষ্কার করা। একবার স্থির হলে, ভেন্ডর পথের ভেতরের ক্রম আর পছন্দ নয়: সোর্স প্রথমে, মেটাডেটা দ্বিতীয়, অ্যাপ্লিকেশন তৃতীয়, কখনো উল্টো নয়।
রিলিজ প্যাকেজ কী রেখে গেল দেখুন
আর কিছু ইনস্টল করার আগে বর্ণনার বদলে ফাইল তালিকা পড়ুন। Debian পরিবারের সিস্টেমে প্যাকেজ ম্যানিফেস্ট উত্তর দেয় এটি কী কনফিগার করেছে এবং কী কোথায় গেছে।
dpkg -L proton-vpn-release | grep -E 'apt|keyring'
apt-cache policy proton-vpn-gnome-desktop
grep -r protonvpn /etc/apt/sources.list.d/
প্রথম লাইনটি সোর্স ফাইল ও কীরিং পথ দেখায়, দ্বিতীয়টি জানায় কনফিগার করা সোর্সগুলো কোন সংস্করণ দিতে পারে। যদি apt-cache policy ক্লায়েন্ট নামের জন্য কিছু না ছাপায়, তাহলে মেটাডেটা রিফ্রেশ হয়নি বা সোর্সটি ভিন্ন স্যুট লক্ষ্য করছে। তৃতীয়টি নিশ্চিত করে এন্ট্রিটি সেখানে আছে যেখানে APT সত্যিই পড়ে।
কীরিং পথটি সোর্স লাইনের signed-by= ফিল্ডের সঙ্গে মিলিয়ে দেখুন। ভুল ডিরেক্টরির কী অপ্রমাণিত সোর্স ত্রুটি দেয়, যা অনুপলব্ধ প্যাকেজের চেয়ে আলাদা সমস্যা।
নির্ভরতা ব্যর্থতাকে আলাদা ধাপ হিসেবে দেখুন
ডাউনলোড করা .deb কে dpkg -i দিয়ে ইনস্টল করলে কিছুই সমাধান হয় না: এটি নির্ভরতা যাচাই করে, কী অনুপস্থিত জানায় এবং প্যাকেজটি অর্ধ-কনফিগার করা অবস্থায় রেখে দেয়। এটি প্রত্যাশিত আচরণ, নষ্ট ডাউনলোড নয়।
apt --fix-broken install তারপর আপনার থাকা সোর্স থেকে APT-র কাছে একটি সুসংগত অবস্থা চায়। APT জানে না আপনি কোন VPN চেয়েছিলেন, আর তার পরিকল্পনা পাওয়া সীমাবদ্ধতা মেটাতে প্যাকেজ সরাতে পারে। হ্যাঁ বলার আগে প্রস্তাবিত লেনদেন পড়ুন, আর সরানোয় আপনার প্রয়োজনীয় কিছু থাকলে থামুন। পরিকল্পনা না পড়ে মেরামত পুনরাবৃত্তি করাই ছোট নির্ভরতা-ফাঁককে এমন ডেস্কটপে পরিণত করে যা আর চালু হয় না।
প্যাকেজ ম্যানেজারের প্রথম অর্থবহ বার্তাটি ধরে রাখুন এবং কাজ করার আগে শ্রেণিবদ্ধ করুন। স্বাক্ষরহীন রিপোজিটরি, কনফিগার করা সোর্সে না থাকা প্যাকেজ, সংস্করণ দ্বন্দ্ব, এবং চালু হয়ে মরে যাওয়া ক্লায়েন্ট—এই চারটি আলাদা সমস্যা।
অ্যাপ্লিকেশন যাচাই করুন, রিপোজিটরি নয়
ক্লায়েন্ট ইনস্টল হওয়া অবস্থায় পৌঁছেছে তা নিশ্চিত করুন, তারপর প্রোগ্রাম চালু হয় তা নিশ্চিত করুন। dpkg-query -W -f='${Status} ${Version}' proton-vpn-gnome-desktop দেখানো উচিত install ok installed একটি সংস্করণসহ, আর এর পরে চালু হতে ব্যর্থ হওয়া প্যাকেজিংয়ের নয়, অ্যাপ্লিকেশনের সমস্যা।
রিপোজিটরির মালিক ও অ্যাপ্লিকেশন প্যাকেজকে আলাদা বস্তু হিসেবে লিখে রাখুন, যাতে পরে সরানো সঠিকটিকে নেয় এবং অন্যটিকে অক্ষত রাখে। ভেন্ডর তার নির্দেশিকা বদলালে সোর্স এন্ট্রিই আপনি আবার পড়েন; ক্লায়েন্টের নামই আপনি পুনরায় ইনস্টল করেন।