অফলাইন VPN প্যাকেজ: লক্ষ্য মেশিনকেই জিজ্ঞাসা করুন তার কী দরকার
সংযুক্তিহীন মেশিনকে তার নিজের নির্ভরতা-সমূহ নিজেই বর্ণনা করতে দিন। দুটি যাত্রা, আগে অনুরোধ তারপর আমদানি, এরপর সেই APT লেনদেন যা আপনাকে এখনও চালাতে হবে।
VPN ক্লায়েন্টটির প্রয়োজন সেই নেটওয়ার্কে পৌঁছাতে যা সাধারণত তার প্যাকেজ সরবরাহ করে, আর এটি একটি সুন্দর ছোট্ট বৃত্ত। অন্য মেশিনে একটি একক OpenVPN DEB ডাউনলোড করলে সাধারণত আরেকটি অনুপস্থিত নির্ভরতা যোগ হয়, তারপর তৃতীয়টি, তারপর লাইব্রেরি সংস্করণের পেছনে ছুটতে ছুটতে একটি সন্ধ্যা কেটে যায়। বিকল্পটি হলো সংযুক্তিহীন মেশিনটিকেই তার নিজের ভাষায় বলতে দেওয়া তার প্যাকেজ ম্যানেজারের কী দরকার। নিচের সবকিছু এই উল্টে যাওয়া থেকেই এসেছে — কে জিজ্ঞাসা করছে সেই প্রশ্নের।
Debian পরিবারের সিস্টেমে সেই কথোপকথন ঘটে apt-offline-এর মাধ্যমে, যা অনুরোধ-ও-প্রত্যাবর্তনের একটি কর্মপ্রবাহ। এর নিজস্ব রানটাইম আগে লক্ষ্য মেশিনে উপস্থিত থাকতে হবে, অনুমোদিত মিডিয়া বা প্রশাসক-পরিচালিত অন্য কোনো বুটস্ট্র্যাপ থেকে ইনস্টল করা, কারণ কোনো টুলই শূন্য থেকে নিজেকে বুট করতে পারে না।
লক্ষ্য মেশিনের প্যাকেজ অবস্থা থেকে শুরু করুন, সহায়কের অবস্থা থেকে নয়
আর কিছু করার আগে লক্ষ্য মেশিনের ডিস্ট্রিবিউশন রিলিজ, ইউজারস্পেস আর্কিটেকচার এবং কনফিগার করা প্যাকেজ সোর্স লিখে রাখুন। এই তিনটি তথ্যই ঠিক করে দেয় কোন VPN বাস্তবায়ন এবং কোন ডেস্কটপ ইন্টিগ্রেশন উপযুক্ত, আর এগুলোই সেই তথ্য যা একটি সংযুক্ত সহায়ক দিতে পারে না।
সহায়ক ফাইল ডাউনলোড করে; সে নির্ভরতার ভিত্তিরেখা হয়ে ওঠে না। যে নতুন ল্যাপটপে ইতিমধ্যে OpenVPN ইনস্টল করা আছে তার প্যাকেজ অবস্থা লক্ষ্য মেশিনের থেকে সম্পূর্ণ আলাদা, তাই তার সাফল্য লক্ষ্য মেশিন কী গ্রহণ করতে পারে সে বিষয়ে কিছুই প্রমাণ করে না।
আপনি আসলে কী চান তাও ঠিক করুন। VPN ইঞ্জিন, একটি NetworkManager সার্ভিস প্লাগইন এবং একটি গ্রাফিক্যাল এডিটর আলাদা আলাদা প্যাকেজ, আর সঠিক নির্বাচন নির্ভর করে রিলিজের ওপর এবং ব্যবহারকারী কীভাবে সংযোগটি পরিচালনা করবেন তার ওপর। হেডলেস সার্ভারের দরকার ইঞ্জিন ও একটি কনফিগারেশন ফাইল; ডেস্কটপের দরকার সেই প্লাগইন যা তার নেটওয়ার্ক সেটিংসকে টানেলটির মালিক হতে দেয়। ভুল সেট অনুরোধ করলে এমন একটি ইনস্টলেশন হয় যা সফল হয় আর এমন একটি সংযোগ তৈরি হয় যা কেউ শুরু করতে পারে না।
দুটি যাত্রা, এই ক্রমেই
ম্যানুয়ালটি তিনটি কাজ আলাদা করে: সংযুক্তিহীন সিস্টেমে একটি অনুরোধ তৈরি করা, সংযুক্ত সহায়কে ডাউনলোড করা, এবং লক্ষ্য মেশিনে ফিরিয়ে আমদানি করা। প্যাকেজ অনুরোধের আগে লক্ষ্য মেশিনের রিপোজিটরি মেটাডেটা রিফ্রেশ করুন, কারণ প্যাকেজ অনুরোধ সেই মেটাডেটা থেকেই তৈরি হয় এবং পুরোনো ইনডেক্স এমন অনুরোধ দেয় যা সহায়ক পূরণ করতে পারে না।
লক্ষ্য মেশিনে apt-offline set vpn-meta.sig --update আকারের একটি প্রশাসক কমান্ড রিফ্রেশ অনুরোধটি লেখে। সেই ফাইলটি সংযুক্ত মেশিনে নিয়ে যান এবং apt-offline get vpn-meta.sig --bundle vpn-meta.zip দিয়ে একটি বান্ডল ডাউনলোড করুন। বান্ডলটি ফিরিয়ে এনে লক্ষ্য মেশিনে apt-offline install vpn-meta.zip দিয়ে আমদানি করুন, আবারও একজন প্রশাসক হিসেবে।
এখন রিফ্রেশ করা মেটাডেটা থেকে প্যাকেজ অনুরোধ তৈরি করুন, যেমন apt-offline set vpn-deps.sig --install-packages openvpn, এবং নতুন বান্ডল নাম নিয়ে যাত্রাটি পুনরাবৃত্তি করুন। প্রতিটি অনুরোধকে তার তৈরি করা বান্ডলের সঙ্গে জোড়ায় রাখুন; পুরোনো মেটাডেটার বিপরীতে তৈরি বান্ডল একই অনুরোধ নয়, এমনকি ফাইলের নামগুলো বিনিময়যোগ্য মনে হলেও।
ডিজাইনের দরকার হলেই কেবল ইন্টিগ্রেশন প্যাকেজগুলো যোগ করুন
যদি ডেস্কটপটি তার নেটওয়ার্ক সেটিংসের মাধ্যমে টানেলটি পরিচালনা করার কথা হয়, তবে অনুরোধে ইঞ্জিনের পাশাপাশি মিলে যাওয়া প্লাগইনও দরকার। অন্য কোনো ডিস্ট্রিবিউশন থেকে মনে রাখা তালিকার বদলে আপনার রিলিজ যে নির্দিষ্ট প্যাকেজ নাম দেয় সেগুলোই অন্তর্ভুক্ত করুন, আর তালিকা বদলালে নতুন অনুরোধ তৈরি করুন। সংস্করণ পিন করাও ভেবে দেখার মতো: নতুন রিলিজের জন্য তৈরি একটি প্যাকেজ নামটি মিলিয়ে দিতে পারে এবং তবুও চালানোর সময় ব্যর্থ হতে পারে। এখানেই চারটি প্যাকেজের একটি স্থির সেট বোঝা হয়ে ওঠে, কারণ সঠিক তালিকাটি লক্ষ্য মেশিনের একটি বৈশিষ্ট্য এবং কেবল লক্ষ্য মেশিনই তা সঠিকভাবে গণনা করতে পারে।
এখানেও চারটি প্যাকেজের একটি স্থির সেট বোঝা হয়ে ওঠে। সঠিক তালিকাটি লক্ষ্য মেশিনের একটি বৈশিষ্ট্য, আর লক্ষ্য মেশিনই একমাত্র যন্ত্র যা তা সঠিকভাবে গণনা করতে পারে।
বান্ডল আমদানি করা VPN ইনস্টল করার সমান নয়
নাম সত্ত্বেও, ইনস্টল অপারেশনটি APT ডেটা প্যাকেজ-ব্যবস্থাপনা পরিবেশে রেখে দেয়। এটি প্যাকেজ লেনদেনটি সম্পাদন করে না। স্থানীয়ভাবে সরবরাহ করা ডেটা থেকে লক্ষ্য মেশিনের প্রকৃত APT ইনস্টলেশনটি সম্পূর্ণ করুন ও পর্যালোচনা করুন, এবং ZIP-এর সাফল্যের অর্থ সফটওয়্যারটি উপস্থিত — এমন ধরে নেওয়ার বদলে আউটপুট পড়ুন।
যদি সেই লেনদেনটি এখনও অনুপলব্ধ ফাইল চায়, তবে নির্দিষ্ট অনুপস্থিত নির্ভরতা বা রিপোজিটরি ত্রুটিটি ধরে রাখুন এবং তা থেকেই পরবর্তী অনুরোধ তৈরি করুন। ভিন্ন রিলিজের DEB দিয়ে প্রতিস্থাপন করবেন না, এবং জোর করে পার করানোর জন্য চেকসাম বা রিপোজিটরি প্রমাণীকরণ যাচাই বন্ধ করবেন না। ম্যানুয়ালটি ডাউনলোড করা ফাইলের যাচাই এড়িয়ে যাওয়ার বিরুদ্ধে স্পষ্টভাবে সতর্ক করে, এবং যথার্থ কারণেই: যাচাই না করা প্যাকেজ ব্যর্থ ইনস্টলেশনের চেয়েও খারাপ পরিণতি।
প্যাকেজ কেবল প্রথম অর্ধেক
সফটওয়্যার ইনস্টল করা অনুমোদিত এন্ডপয়েন্ট, প্রোফাইল, ট্রাস্ট উপাদান এবং শংসাপত্র সংগ্রহ করা থেকে পৃথক, আর এগুলোর প্রত্যেকটির নিজস্ব নিয়ন্ত্রিত হস্তান্তর থাকতে পারে। বৈধ প্রোফাইল ছাড়া একটি কার্যকর প্যাকেজ সেট কোনো কিছুর সঙ্গে সংযোগ করে না।
তারপর ভবিষ্যতের হালনাগাদের জন্য অফলাইন স্থানান্তর পথটি সচল রাখুন। প্রথম সফল সংযোগকে রক্ষণাবেক্ষণের সমাপ্তি ধরে নিলে পরবর্তী নিরাপত্তা হালনাগাদ অপেক্ষা করবে যতক্ষণ না গাড়িসহ কেউ আসতে পারে, আর এভাবেই একটি অফলাইন নেটওয়ার্ক নিঃশব্দে বছরের পর বছর পিছিয়ে পড়ে।