ডেবিয়ান লিনাক্সে প্যাকেজ ম্যানেজমেন্ট এর ইতিবৃত্ত

ডেবিয়ান লিনাক্সে প্যাকেজ ইনস্টলের এর জন্য যে ফাইলগুলি ব্যবহৃত হয় তার এক্সটেনশন হচ্ছে .deb। উইন্ডোজে যেমন আমরা .exe ফাইলের উপর ডাবল ক্লিক করে সফটওয়্যার ইনস্টল করি ডেবিয়ান ভিত্তিক লিনাক্সে তেমন পদ্ধতির বদলে apt-get, aptitude অথবা synaptic নামক গ্রাফিক্যাল টুলস ব্যবহার করা হয়। প্রথম দুটি হচ্ছে কমান্ড লাইন ভিত্তিক এবং সিনাপ্টিক মাউস দিয়ে ব্যবহার করা যায়। এ ধরনের টুলস ব্যবহার করতে হলে ডেবিয়ান প্যাকেজগুলি আগে থেকেই নির্দিষ্ট স্থানে যেমন-সিডি, ডিভিডি, ইন্টারনেট এর এফটিপি সার্ভার বা কোন লোকাল ফোল্ডারে থাকতে হবে। তারপর ইনস্টল করা যাবে এ ধরনের টুলসের সাহায্যে।

তবে সরাসরি ডেব প্যাকেজ ইনস্টলের জন্য আরেকটি কমান্ড ব্যবহার করা যায় - dpkg কমান্ড। তবে এর সীমাবদ্ধতা হচ্ছে এটি ডিপেনডেন্সী ফাইলগুলিকে স্বয়ংক্রিয়ভাবে ইনস্টল করতে পারে না। হয় আগে থেকেই ডিপেনডেন্সী ফাইলগুলি মেশিনে ইনস্টল করা থাকতে হবে নতুবা উক্ত ফোল্ডারে সব ডিপেনডেন্সী ফাইল কপি করে সব ডেব ফাইলগুলিকে dpkg –i *.deb কমান্ডের সাহায্যে একসাথে ইনস্টল করতে হবে। এটি বেশ ঝামেলার কাজ হয়ে দাড়ায় যদি ইন্টারনেট কানেকশন না থাকে। এজন্য আমি আগের কয়েকটি পোস্টে অফলাইন ইনস্টলার তৈরীর পদ্ধতি আলোচনা করেছি। এজন্য দেখুন-

১. লিনাক্সে নির্দিষ্ট প্যাকেজের অফলাইন ইনস্টলার তৈরী করা
২. উইন্ডোজ মেশিন থেকে লিনাক্স প্রোগ্রামের অফলাইন ইনস্টলার তৈরী

তবে উক্ত পদ্ধতিগুলির কিছু সমস্যা ছিল। যেমনঃ একটি মেশিনে অবশ্যই লিনাক্স ইনস্টল থাকতে হবে এবং সেটির সাথে নেট কানেকশন থাকতে হবে। তারপর উক্ত মেশিনকে ব্যবহার করে অন্যান্য মেশিনের জন্য অফলাইন ইনস্টলার তৈরী করতে হবে এবং উক্ত পদ্ধতিগুলি ছিল dpkg কমান্ড নির্ভর। ফলে লোকাল রিপোজিটরী হিসেবে কোন মেশিনকে ব্যবহার করা সম্ভব ছিল না উক্ত পদ্ধতির সাহায্যে। অর্থাৎ উক্ত পদ্ধতিতে প্রতিটি মেশিনে ফাইল কপি করে ইনস্টল করতে হতো। কিন্তু ল্যান নেটওয়ার্কে কোন মেশিনে একটি লোকাল রিপোজিটরী তৈরী করে তাকে অন্যান্য মেশিনে খুব সহজেই ব্যবহার করা যায়।

লোকাল রিপোজিটরী তৈরী করতে হলে apt-get/aptitude কমান্ডগুলি কিভাবে কাজ করে থাকে সে সম্বন্ধে একটি স্বচ্ছ ধারনা প্রয়োজন। আসুন প্রথমেই আমরা সে উদ্দেশ্য কে সামনে রেখে এগিয়ে যাই।

নতুন ইনস্টলড মেশিনের সফটওয়্যার লিস্ট

কোন মেশিনে লিনাক্স নতুন ইনস্টল করার পর সিনাপ্টিকে যে সফটওয়্যারগুলির তালিকা থাকে সেগুলি সাধারনতঃ সিডি/ইন্টারনেট থেকে ইনস্টল করা যায়। যদি ইন্টারনেট না থাকে তবে শুধুমাত্র সিডিতে যে সফটওয়্যারগুলি থাকে সেগুলিই ইনস্টল করতে পারবেন। বাকীগুলি ইনস্টল করার সময় নেট কানেকশন না থাকলে এরর দেখাবে। এখন নতুন কোন সিডি যদি সিনাপ্টিকে যোগ করতে চান মেনুর সাহায্যে (Edit --> Add CD ROM) অথবা কমান্ড লাইনের apt-cdrom add এর সাহায্যে তাহলে প্রথমেই উক্ত সিডির একটি বিশেষ ফাইল - Packages.gz যা সাধারনত কোন সিডির \dists\lenny\main\binary-i386\Packages এ ধরনের পাথে থাকে তাকে প্রথমে খুজে বের করবে। তারপর উক্ত ফাইলের সাহায্যে নতুন সফটওয়্যার লিস্ট তালিকায় যুক্ত করবে। এ Packages.gz ফাইলটি সব থেকে গুরুত্বপূর্ন টুলস সিনাপ্টিকের জন্য। এটি আনজিপ করে কোন টেক্সট এডিটরে ওপেন করলে সবকিছু দেখতে পারবেন। এ ফাইলে প্যাকেজসমূহের তালিকা, বর্ননা, ভার্সন নম্বর, কোন পাথ থেকে ইনস্টল করা হবে তার নির্দেশনা, MD5 চেক করা, ডিপেনডেন্সির তালিকাসহ যা প্রয়োজন তার সবই থাকে। আপনি নিজে যদি কোন লোকাল রিপোজিটরী বানাতে চান তাহলে আপনার নিজস্ব ফোল্ডারে যে ডেব ফাইলগুলি থাকবে তার জন্য একটি আলাদা Packages.gz ফাইল তৈরি করে নিতে হবে। এটি শুনে ঘাবড়ানোর কিছু নেই। ডেবিয়ান নির্ভর লিনাক্সে dpkg-scanpackages কমান্ডের সাহায্যে স্বয়ংক্রিয়ভাবে এ ফাইলটি তৈরী করা যায়। এটি তৈরী হয়ে যাওয়ার পর /etc/apt/sources.list ফাইলে আপনার লোকাল রিপোজিটরী ফোল্ডারটিকে যুক্ত করে apt-get update কমান্ড চালালেই উক্ত Packages.gz ফাইলে নতুন সফটওয়্যার তালিকা আপনার মেশিনের সিনাপ্টিকে যুক্ত হয়ে যাবে। তারপর উক্ত সফটওয়্যারগুলিকে ক্লিক এন্ড গো এর মাধ্যমেই লোকাল ফোল্ডার/রিপোজিটরী থেকে ইনস্টল করতে পারবেন।

তাহলে উপরের আলোচনা থেকে লোকাল রিপোজিটরী তৈরীর যে পদ্ধতি আমরা শিখলাম তা হলঃ

১. প্রথমেই একটি ফোল্ডারে আপনার প্রয়োজনীয় সব ডেব ফাইলগুলিকে কপি করে নিন। এটি হোম ফোল্ডারের আন্ডারে যেকোন একটি ফোল্ডার তৈরী করেও করা যেতে পারেন। যেমনঃ /home/username/local_repo

২. এবার dpkg-scanpackages কমান্ড দিয়ে Packages.gz ফাইলটি উক্ত ফোল্ডারেই তৈরী করে নিন।

৩. Packages.gz তৈরী হয়ে যাওয়ার পর /etc/apt/sources.list ফাইলে /home/username/local_repo ফাইলটির পাথ যুক্ত করুন।

৪. সবার শেষে তালিকা আপডেট করার জন্য কমান্ড দিনঃ apt-get update

ব্যস আপনার লোকাল সফটওয়্যার লিস্ট যুক্ত হয়ে যাবে সিনাপ্টিকে।

আসুন আমরা উপরের বর্নিত পদ্ধতিতে একটি ছোট্ট রিপো তৈরি করে ফেলি।

কমান্ডঃ
mkdir /home/your_name/my_repo
cp /source_path/*.deb /home/your_name/my_repo
cd /home/your_name/my_repo
dpkg-scanpackages /home/your_name/my_repo /dev/null | gzip -9c > Packages.gz
echo "deb file:/home/your_name/my_repo ./" >> /etc/apt/sources.list
apt-get update


(যদি dpkg-scanpackages কমান্ড না দিতে পারেন তবে কয়েকটি প্যাকেজ ইনস্টল করে নিন

apt-get install dpkg-dev build-essential

কমান্ডের সাহায্যে)

এ ধরনের রিপো তৈরী করে তা বিতরন করা বেশী সুবিধাজনক। কারন সে ক্ষেত্রে যিনি এ রিপো ব্যবহার করবেন তাকে সব প্যাকেজ ইনস্টল করতে হবে না। শুধুমাত্র যেটি প্রয়োজন সেটিই ইনস্টল করতে পারবেন। অন্যান্য অফলাইন ইনস্টলার এর ক্ষেত্রে dpkg –i *.deb কমান্ডের সাহায্যে সব ধরনের সফটওয়্যার ইনস্টল করতে হয় যা অনেক সময় প্রয়োজন হয় না। এছাড়াও এ ধরনের ডেব প্যাকেজগুলি এক সাথে কপি করে একটি সিডির সাহায্যেও বিতরন করা যেতে পারে। সিডিতে পছন্দের প্যাকেজগুলি একসাথে রাখা এবং ব্যবহার করা সম্ভব। কিন্তু ডিস্ট্রোর নিজস্ব রিপো সিডি ব্যবহার করলে তা সম্ভব হয়ে ওঠে না।

ল্যান নেটওয়ার্কে লোকাল রিপোজিটরী তৈরী ও ব্যবহার করা

উপরে বর্নিত পদ্ধতিতে এবার আমরা ল্যান নেটওয়ার্কের একটি মেশিনকে সবার জন্য রিপোজিটরী হিসেবে কিভাবে ব্যবহার করবো তা দেখবো। কমান্ড আগের মতই তবে apache web server ইনস্টল করা থাকতে হবে মূল সার্ভারে।

কমান্ডঃ
cd /var/www
mkdir debian
mkdir /debian/binary
cp /source_path/*.deb /var/www/debian/binary
cd debian
dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz

echo "deb http://192.168.0.1/debian/binary ./" >> /etc/apt/sources.list
apt-get update
শেষ দু’লাইন ল্যানের যেকোন ক্লায়েন্ট মেশিনে প্রয়োগ করতে হবে। তাহলে উক্ত মেশিনে আপনার রিপোজিটরী কাজ করতে পারবে।

0 comments:

Post a Comment