Installed: (none) রিপোর্ট করা একটি VPN প্যাকেজ অনুপস্থিত নয়; এটি কেবল ইনস্টল করা নেই। আপনি এটি ইনস্টল করতে পারবেন কি না তা নির্ধারণ করে Candidate লাইন, যা APT ইনডেক্স, suite-এর নাম, আর্কিটেকচার এবং কার্যকর থাকা যে কোনো পিনিং নিয়ম থেকে নেয়। উধাও হওয়া VPN প্যাকেজের বেশিরভাগ অভিযোগ আসলে প্যাকেজিং সমস্যা নয়, প্রার্থী-সংক্রান্ত সমস্যা। একটিও সোর্স এন্ট্রি স্পর্শ করার আগে দুটি লাইনই পড়ুন।

আমি আগে প্রার্থীটি দেখি, কারণ এতে একটি কমান্ড লাগে এবং স্বাভাবিক অনুমানের অর্ধেক বাদ পড়ে।

apt-cache policy-এর আউটপুট আপনাকে কী বলছে

apt-cache policy স্থানীয় প্যাকেজ ক্যাশ পড়ে, নেটওয়ার্ক নয়। এটি ইনস্টল করা সংস্করণ, প্রার্থী সংস্করণ এবং প্যাকেজটি যে সব ইনডেক্সে পাওয়া যায় তাদের একটি সারণি তার সাথে যুক্ত অগ্রাধিকারসহ দেখায়।

apt-cache policy openvpn
apt-cache madison openvpn
apt list -a network-manager-openvpn

প্রার্থী হলো সেই সংস্করণ যা APT এখনই বেছে নেবে। madison দেখায় প্রতিটি সোর্স কী দেয় এবং তার অগ্রাধিকার কত, আর এভাবেই আপনি এমন প্যাকেজ চিনতে পারেন যা ইনডেক্সে আছে কিন্তু পিন প্রতিযোগিতায় হারে। apt-cache ম্যানুয়াল দুটিকেই ক্যাশ পাঠ হিসেবে নথিভুক্ত করে, তাই কোনোটিই প্রমাণ করে না যে মিররটি এই মুহূর্তে পৌঁছানো যায়।

প্রার্থী লাইনটি খালি হলে বা (none) দেখালে, কনফিগার করা সোর্সে এই সিস্টেমের জন্য, যেমন এটি কনফিগার করা আছে, কিছুই যোগ্য নয়।

প্রার্থী হারিয়ে যাওয়ার চারটি কারণ

বাস্তবে কারণ প্রায় সবসময় চারটি জিনিসের একটি হয়, আর প্রতিটির আলাদা সমাধান আছে।

আপনার সোর্সের suite-এর নাম অবশ্যই সেই ডিস্ট্রিবিউশনের সাথে মিলতে হবে যার জন্য প্যাকেজটি তৈরি। trixie মিররের দিকে তাক করা Debian bookworm সিস্টেম, বা আপগ্রেডের সময় sources.list.d ফাইলে নাম বদলে যাওয়া Ubuntu সংস্করণ, কেবল অন্য suite-এ থাকা প্যাকেজের জন্য কিছুই সমাধান করে না। প্রতিটি এন্ট্রিতে lsb_release -cs কে suite ফিল্ডের সাথে মিলিয়ে দেখুন।

APT কেবল dpkg-এর জানা আর্কিটেকচারের জন্য তৈরি প্যাকেজ দেখে। একটি 32-বিট কনটেইনার, একটি arm64 ইমেজ বা কেবল amd64-এর জন্য দেওয়া প্যাকেজ চাওয়া Raspberry Pi ইনস্টলেশন ত্রুটির বার্তার বদলে খালি প্রার্থী পায়। dpkg --print-architecture এবং dpkg --print-foreign-architectures আপনাকে বলে দেয় আপনি আসলে কোন সেটে আছেন।

কম্পোনেন্টও গুরুত্বপূর্ণ। কেবল main সক্রিয় থাকলে contrib বা non-free-এর প্যাকেজ অদৃশ্য থাকে, এবং Ubuntu-র universe একইভাবে আচরণ করে। ইনডেক্স আছে এবং প্যাকেজটি তাতে আছে; কেবল আপনার সক্রিয় কম্পোনেন্ট তালিকায় এটি নেই।

পিনিং হলো নীরব কারণটি। /etc/apt/preferences.d-এর একটি ফাইল প্যাকেজকে ইনস্টল থ্রেশহোল্ডের নিচে সীমিত করতে পারে, আর তারপর সম্পূর্ণ ভালো একটি প্রার্থী আউটপুট থেকে হারিয়ে যায়, অথচ ইনডেক্স এখনও সেটি তালিকাভুক্ত করে। যেহেতু policy প্রতিটি সোর্সের পাশে অগ্রাধিকার দেখায়, যে প্যাকেজের প্রতিটি সোর্সে কম পিন নম্বর থাকে সেটিই এখানে সূত্র।

পুরনো ইনডেক্স অনুপস্থিত প্যাকেজের মতো দেখায়

ক্যাশ একটি স্ন্যাপশট। যদি শেষ apt update একটি ইনডেক্সে ব্যর্থ হয়, তবে কুয়েরি পুরনো কপি থেকেই উত্তর দিতে থাকে, আর আপনি যে প্যাকেজ আশা করছেন সেটি সেই কপিতে নাও থাকতে পারে।

apt update প্রতি ইনডেক্সের ত্রুটি দেখায়, তাই সেগুলো পড়ুন, সরাসরি শেষ লাইনে স্ক্রল করবেন না।

স্বাক্ষর ত্রুটি, মেয়াদোত্তীর্ণ release ফাইল বা অপ্রাপ্য মিররের কারণে ব্যর্থ হওয়া রিফ্রেশ আগের ইনডেক্সটি জায়গায় রেখে দেয়। এটি বুদ্ধিমান নকশা, কারণ মিরর সাময়িকভাবে বন্ধ থাকলে এটি একটি কার্যকর ক্যাশ ধরে রাখে। পার্শ্বপ্রতিক্রিয়া হলো, রিপোজিটরি অফলাইন থাকলেও অনুসন্ধান সফল হতে পারে। এর মানে আরও হলো, ইনডেক্সটি সর্বশেষ কখন আনা হয়েছিল তা না জানা পর্যন্ত প্যাকেজের অনুপস্থিতি কিছুই প্রমাণ করে না। প্যাকেজের নামকে দোষ দেওয়ার আগে /var/lib/apt/lists-এর অধীনে ফাইলের তারিখগুলো দেখুন।

আপনার সত্যিই প্রয়োজনীয় প্যাকেজের নাম দিন

OpenVPN একটি ডেমন, আর মানুষ সাধারণত যে অংশগুলো চায় সেগুলো আলাদা প্যাকেজ।

ইঞ্জিন, NetworkManager প্লাগইন এবং ডেস্কটপ এডিটর তিন নামের তিনটি প্যাকেজ, আর প্লাগইনটির একটি GTK রূপভেদ আছে যার নাম ডিস্ট্রিবিউশনভেদে আলাদা। apt-cache search --names-only openvpn বর্ণনার বদলে নাম ও প্রদত্ত নাম মেলায়, আর জিনিসটির নাম মোটামুটি জানা থাকলে আপনি এটাই চান।

নামটি সত্যিই অজানা হলে একবার বর্ণনায় খুঁজুন, তারপর সঠিক নামে ফিরে আসুন। অন্য ডিস্ট্রিবিউশন থেকে ধার করা -gui প্রত্যয় যোগ করে সিদ্ধান্তে পৌঁছাবেন না যে প্যাকেজটি আর নেই।

সোর্স সবার শেষে বদলান, তারপর লেনদেন যাচাই করুন

একটি রিপোজিটরি যোগ করা বদলে দেয় কে আপনার আপডেট সরবরাহ করে, তাই এটি তদন্তের শুরুতে নয়, শেষে প্রযোজ্য।

তার আগে release, আর্কিটেকচার, কম্পোনেন্ট ও পিনের অবস্থা নিশ্চিত করুন। চারটির মধ্যে কোনগুলো যাচাই করেছেন লিখে রাখুন, যাতে পরের ব্যক্তি পুরো ঝাড়ু আবার না দেন। চারটিই ঠিক থাকলে এবং প্রার্থী এখনও না থাকলে সৎ সিদ্ধান্ত হলো এই সংস্করণে সেই প্যাকেজ নেই। বাকি অপশন হলো একটি backport, একটি ভেন্ডর প্যাকেজ বা ভিন্ন একটি সমর্থিত সংস্করণ, আর এগুলোর প্রতিটি অনুমান নয়, সচেতন পছন্দ।

প্রার্থী যখন সত্যিই দেখা যায়, তখন প্রয়োগের আগে অনুকরণ করুন: প্যাকেজের নামসহ apt-get install --simulate দেখায় কী টানা হবে এবং কী সরানো হবে। প্যাকেজের প্রাপ্যতা, ইনস্টলেশন এবং একটি কার্যকর টানেল তিনটি আলাদা ধাপ থেকে যায়, আর ট্রাফিক বহনের আগে টানেলের এখনও তার প্রোফাইল, প্রমাণপত্র, রুট ও DNS দরকার।

সম্পর্কিত নিবন্ধ