Showing posts with label Linux Package Management. Show all posts
Showing posts with label Linux Package Management. Show all posts

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

ডেবিয়ান লিনাক্সে প্যাকেজ ইনস্টলের এর জন্য যে ফাইলগুলি ব্যবহৃত হয় তার এক্সটেনশন হচ্ছে .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
শেষ দু’লাইন ল্যানের যেকোন ক্লায়েন্ট মেশিনে প্রয়োগ করতে হবে। তাহলে উক্ত মেশিনে আপনার রিপোজিটরী কাজ করতে পারবে।

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

উইন্ডোজ চালিত মেশিন থেকে নেট দিয়ে খুব সহজে একটি প্যাকেজের সব ডিপেনডেন্সী সহ ডাউনলোড করা যায়। এজন্য প্রথমে সিনাপ্টিক প্যাকেজ ম্যানেজার থেকে নির্দিষ্ট প্যাকেজকে ডাউনলোডের জন্য সিলেক্ট করুন। তারপর মেনু থেকে সিলেক্ট করুন Download Script Only। তারপর Apply Click করুন। যেখানে ফাইলটি Save করতে বলবে সেখানে সেভ করুন। এ ফাইলটিতেই কোন কোন ফাইল কোথা থেকে ডাউনলোড করতে হবে একটি লিনাক্স প্যাকেজ/প্রোগ্রামের জন্য তা দেয়া থাকে।

তবে আপনার লিনাক্স মেশিনের সিনাপ্টিক লিস্টে প্যাকেজটি নাও থাকতে পারে। তাই আপনার প্যাকেজটি পাবার জন্য লিনাক্স মেশিনকে নেটে কানেক্ট করে কমান্ড দিনঃ apt-get update। তাহলে সব ধরনের প্যাকেজের লিস্ট আপডেট হয়ে যাবে। ফলে আপনি যেকোন প্যাকেজের স্ক্রিপ্ট এখন খুব সহজেই পেয়ে যাবেন লিনাক্স মেশিন থেকে যা পরবর্তীতে ডাউনলোড করতে পারবেন উইন্ডোজ মেশিনে নিয়ে। যদি আরও বেশি প্যাকেজ লিস্ট পেতে চান তাহলে /etc/apt/sources.list ফাইলে ডেবিয়ান সিড এর রিপো যোগ করে নিন।

সিড রিপোর জন্য /etc/apt/sources.list ফাইলে যোগ করুন নিচের লাইনটি-
deb http://http.us.debian.org/debian sid main contrib
এবং apt-get update কমান্ড চালান। তারপর প্যাকেজ স্ক্রিপ্ট তৈরী করুন।

ফাইলটির এন্ট্রিগুলি হবে নিচের মতঃ
wget -c cdrom:[Debian GNU/Linux testing _Lenny_ - Official RC i386 DVD Binary-1 20081104-07:33]/pool/main/q/qt4-x11/libqt4-test_4.4.3-1_i386.deb

wget -c cdrom:[Debian GNU/Linux testing _Lenny_ - Official RC i386 DVD Binary-1 20081104-07:33]/pool/main/q/qt4-x11/libqt4-core_4.4.3-1_i386.deb

wget -c ftp://ftp.mepis.com/mepis/pool/main/s/s ... 1_i386.deb

উপরে skype ইনস্টলের জন্য আমার মেপিস লিনাক্সে যে যে ফাইল ইনস্টল করতে হবে তার লিস্ট। এখানে লক্ষ্য করে দেখুন- যে ফাইলের সামনে wget -c cdrom লেখা আছে সেটি আমার ডেবিয়ান ডিভিডি থেকেই ইনস্টল হবে সুতরাং এগুলিকে ডাউনলোডের দরকার নেই। তবে ইচ্ছা হলে করতে পারেন। আর যে ফাইলের সামনে wget -c ftp:// দিয়ে শুরু হয়েছে সেটি ডাউনলোড করে নিন। সব ফাইলগুলিকে একটি ফোল্ডারে ডাউনলোড করুন। এজন্য উইন্ডোজের ভাল কোন ডাউনলোড ম্যানেজার যেমন freedownloadmanager ব্যবহার করতে পারেন।

সাধারনত এ লিস্টে ডিপেনডেন্সী সহ প্যাকেজ লিস্ট অনেক লম্বা হয়ে থাকে। তাই ডাউনলোড ম্যানেজার আপনার কাজকে অনেকখানি সহজ করে দিবে নিঃসন্দেহে।

তাহলে আসুন দেখি কিভাবে fdm দিয়ে উক্ত প্যাকেজটি উইন্ডোজে কিভাবে ডাউনলোড করতে পারি। উইন্ডোজ মেশিনে এফডিএম ইনস্টল করে চালু করুন যেখানে নেট আছে। ডেস্কটপের উপর একটি আইকন দেখতে পাবেন তীরচিহ্নের মত। এখানে রাইট মাউস ক্লিক করে Clipboard monitoring অপশন এ ক্লিক করে এনাবল করুন। তাহলে কোন ফাইলের লিংক কপি করলেই স্বয়ংক্রিয়ভাবে fdm তা নিজেই ডাউনলোড করবে কিনা তা আপনাকে জানাবে।

ছবি

এখন আপনার প্যাকেজ স্ক্রিপ্ট ফাইলটিকে wordpad প্রোগ্রাম দিয়ে ওপেন করুন তাহলে ভালভাবে দেখতে পারবেন। Notepad এ অনেক সময় লম্বা লাইনগুলি ঠিকমত দেখাতে পারেনা। এবার যে লাইনের সামনে wget -c ftp:// লেখা দিয়ে শুরু হয়েছে সে লাইনে কার্সর নিয়ে ftp লেখা থেকে শুরু করে লাইনের শেষ লেখা .deb পর্যন্ত কপি করুন তাহলে নিচের মত fdm এর ডায়ালগ বক্স ওপেন হবে।
ছবি

নিচের লেখা অংশের মত কপি করুনঃ

ftp://ftp.mepis.com/mepis/pool/main/s/skype/skype_2.0.0.72-1_i386.deb


OK করুন। এভাবে ফাইলের প্রতিটি প্যাকেজকে fdm দিয়ে ডাউনলোড করে নিন।

ছবি

সব ফাইল ডাউনলোড শেষ হলে fdm এর স্ক্রিনে উক্ত ফাইল সমূহের যে কোন একটির উপর রাইট মাউস ক্লিক করে Open folder এ ক্লিক করুন। তারপর উক্ত ফোল্ডার থেকে ফাইলগুলি কপি করে আপনার কাংখিত ফোল্ডারে নিয়ে প্যাকেজ তৈরী করুন এবং যাদের নেট কানেকশন নেই তাদেরকে প্যাকেজটি দিয়ে দিন ইনস্টলের জন্য।

অফলাইনে ইনস্টলের জন্যঃ

অফলাইন মেশিনের /var/cache/apt/archives ফোল্ডারে উক্ত ফাইলগুলি কপি করে দিন। তারপর apt-get install packagename লিখে এন্টার দিন। তাহলে সিডি-রমে যে ফাইল/ডিপেনডেন্সি প্যাকেজগুলি আছে তা স্বয়ংক্রিয়ভাবে ইনস্টল করে নিবে আর যেগুলি নেট থেকে ডাউনলোড করতে হবে তা /var/cache/apt/archives ফোল্ডার থেকে ইনস্টল করে নেবে। ডাউনলোডের জন্য ইন্টারনেট কানেকশন চাইবে না। কারন প্যাকেজসমূহ apt-get কমান্ড ডাউনলোড করে এ ফোল্ডারেই রাখে। তাই উক্ত প্যাকেজ/ডিপেনডেন্সী ফাইল আগে থেকেই কপি করা থাকলে সে আর এগুলি ডাউনলোড করবে না এবং আপনার প্যাকেজও সঠিকভাবে ইনস্টল হয়ে যাবে।

তবে যাদের মেশিনে সিনাপ্টিক আপডেট/ আপনার ইনস্টল সিডি নেই তাদের জন্য সিডি/ডিভিডি থেকেও সব ফাইলগুলি একসাথে কপি করে দিন উক্ত সিডি/ডিভিডি থেকে। যেমন আমার ডেবিয়ান ডিভিডিতে /pool/main/q/qt4-x11/libqt4-test_4.4.3-1_i386.deb এ পাথে libqt4-test_4.4.3-1_i386.deb ফাইলটি আছে। তারপর অফলাইন মেশিনে সবগুলি কপি করার পর ঐ ফোল্ডারে ঢুকে শেল থেকে কমান্ড দিনঃ dpkg -i *.deb বা আশাবাদী ভাইয়ের দেখানো পদ্ধতি অনুযায়ী একটি shell কমান্ডের ফাইল তৈরী করে দিতে পারেন যা ডাবল ক্লিক করলেই ইনস্টল করা যায়।

তারপরও যদি কোন ডিপেনডেন্সী সমস্যা হয় /এরর দেখায় তবে নিচের কমান্ডটি দিন এবং স্ক্রিন নির্দেশ অনুযায়ী কাজ করুন-

aptitude -f install

তাহলে যে প্যাকেজটি সমস্যা করছে সেটি আন-ইনস্টল করে ফ্রেশ করে নিতে পারবেন আপনার লিনাক্সকে।

আশা করি উপরের পদ্ধতিটি অনেকেরই কাজে লাগবে।

ডেবিয়ান প্যাকেজ সিস্টেম পরিচালনা/সফটওয়্যার ইনস্টলের কমান্ডসমূহ

উইন্ডোজে সফটওয়্যার ইনস্টল করার জন্য বিখ্যাত setup.exe ফাইল এর সাথে আমরা সবাই কমবেশী পরিচিত। আর এ সিস্টেমে অভ্যস্ত হওয়ার কারনে লিনাক্স এ প্যাকেজ/প্রোগ্রাম ইনস্টল করা বেশ ঝামেলাপূর্ণ মনে হয় আমাদের কাছে। তবে আজকাল লিনাক্সে কিছু গ্রাফিক্যাল ইনস্টলার থাকার কারনে এটি উইন্ডোজ এ ইনস্টল করার মতই সহজ হয়ে এসেছে। তারপরও কমান্ড লাইন ইন্টারফেস ব্যবহার করা কিছু কিছু ক্ষেত্রে সুবিধাজনক এবং কিছু অপশন শুধুমাত্র কমান্ড লাইন অপশনেই কাজ করে। তাই এটি শিখে রাখা লিনাক্স এ্যাডমিনিস্ট্রেশনের জন্য বেশ গুরুত্বপূর্ন।

ডেবিয়ান এবং ডেবিয়ান বেজড ডিস্ট্রো যেমন উবুন্তু, কোরেল ইত্যাদি লিনাক্সগুলিতে কয়েকটি কমান্ড যেমনঃ apt-get, aptitude, dpkg ইত্যাদি প্যাকেজ ইনস্টলের জন্য বহুলভাবে ব্যবহৃত হয়। প্রত্যেকটি কমান্ড এরই বেশ কিছু সুবিধা আছে যা অন্য প্যাকেজ এ নেই। তাই এ তিনটি কমান্ড ই শিখতে হয় প্যাকেজ ইনস্টলের জন্য।

যেমনঃ .deb এক্সটেনশনযুক্ত ফাইল দিয়ে প্যাকেজ ইনস্টলের জন্য আপনাকে dpkg কমান্ড দিতে হবে। আবার সিডি, ডিভিডি বা ডেবিয়ান এর সার্ভার থেকে ইনস্টলের জন্য apt-get এবং aptitude কমান্ড দুটি ব্যবহৃত হয়। কিন্তু এ কমান্ডগুলি কিভাবে খুজে নেয় যে প্যাকেজটি কোথায় আছে? এজন্য একটি টেক্সট ফাইল আছে যার নাম ও পাথ হচ্ছে- /etc/apt/sources.list । এ ফাইলে যে এন্ট্রিগুলি আছে তা থেকেই এ কমান্ডগুলি প্যাকেজ ইনস্টল করে থাকে। তাই প্রথমেই এ ফাইলটি কাস্টমাইজ কিভাবে করা যায় আমরা তা দেখব।
  • বেসিক কনফিগারেশন
/etc/apt/sources.list ফাইলে যে ফরম্যাটে ডাটাগুলি থাকে তা নিম্নরূপঃ

deb http://host/debian distribution section1 section2 section3
deb-src http://host/debian distribution section1 section2 section3

উপরে যে এন্ট্রিগুলি দেওয়া হয়েছে তা অবশ্যই কাল্পনিক এবং তা ব্যবহারের জন্য নয়-বোঝার জন্য। প্রত্যেকটি লাইনের প্রথম শব্দ deb অথবা deb-src দ্বারা আর্কাইভের প্রকারভেদকে বোঝায়- অর্থাৎ এটি কি বাইনারি প্যাকেজ (deb), যেটি সাধারনত আমরা প্রিকম্পাইল্ড হিসেবে ব্যবহার করে থাকি অথবা সোর্স প্যাকজ (deb-src) কি-না যেটি অরিজিনাল সোর্স ফাইল, ডেবিয়ান কন্ট্রোল ফাইল (.dsc) এবং diff.gz ফাইল থাকে যেখানে প্রোগ্রামটিকে ডেবিয়ান স্ট্যান্ডার্ড করতে কি কি করা দরকার তার লিস্ট থাকে।

আমরা সাধারনত ডেবিয়ান এর sources.list ফাইলে নিচের তথ্য অনুযায়ী পেয়ে থাকিঃ

# See sources.list(5) for more information, especially
# Remember that you can only use http, ftp or file URIs
# CDROMs are managed through the apt-cdrom tool.
deb http://http.us.debian.org/debian stable main contrib non-free
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free

# Uncomment if you want the apt-get source function to work
#deb-src http://http.us.debian.org/debian stable main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free


এ কয়টি লাইন-ই সাধারনত একটি বেসিক ডেবিয়ান ইনস্টল করার জন্য প্রয়োজন। প্রথম লাইনটি ডেবিয়ান এর অফিসিয়াল আর্কাইভকে-ই নির্দেশ করে থাকে, দ্বিতীয় লাইনটি non-us আর্কাইভকে নির্দেশ করে এবং তৃতীয় লাইনটি ডেবিয়ান সিকিউরিটি আপডেট এর জন্য।

শেষের দুটি লাইনকে উপেক্ষা করার জন্য সামনে একটি # চিহ্ন দেয়া আছে। ফলে apt-get এটিকে কমেন্ট হিসেবে উপেক্ষা করবে। এগুলিই হচ্ছে deb-src লাইনসমূহ যা ডেবিয়ান এর প্যাকেজ সোর্স হিসেবে কাজ করে থাকে। যদি আপনি মাঝে মাঝে প্রোগ্রাম এর মূল সোর্স কোড ডাউনলোড করে থাকেন টেস্টিং এর জন্য বা রি-কম্পাইল করার জন্য তাহলে এগুলিকে আনকমেন্ট করে দিন অর্থাৎ সামনের # চিহ্নটি উঠিয়ে দিন।
যদি নতুন সিডি/ডিভিডি যোগ করতে চান তবে সিডি/ডিভিডি রমে সিডি/ডিভিডি ঢুকিয়ে নিচের কমান্ডটি দিনঃ

apt-cdrom add

এর ফলে নতুন সিডি/ডিভিডি sources.list ফাইলে যোগ হবে।


/etc/apt/sources.list ফাইলটিতে আরো কিছু লাইন থাকতে পারে। APT বিভিন্ন ধরনের আর্কাইভ যথা http, ftp, file (লোকাল ফাইলসমূহ, e.g., একটি ডিরেক্টরী বা ফোল্ডার যেটি ISO9660 টাইপের ফাইলকে মাউন্ট করেছে) এবং ssh নিয়ে কাজ করতে পারে।

/etc/apt/sources.list ফাইল এ পরিবর্তন করার পর apt-get চালাতে যেন ভুলবেন না। এটি অবশ্যই জরুরী কারন যা আপনি নতুন সোর্স হিসেবে দিলেন সেটি থেকে APT কে প্যাকেজ ডাউনলোড করতে সক্ষম করে। অন্যথায় APT আপনার দেয়া তথ্য পাবে না।

যখন আপনি কোন প্যাকেজ বা প্রোগ্রাম ইনস্টল করেন তখন APT যে সমস্ত ফাইলগুলি প্রয়োজন তা /etc/apt/sources.list এ বর্নিত হোস্টগুলি থেকে ডাউনলোড করে তারপর /var/cache/apt/archives/ এ সেভ করে থাকে এবং সবশেষে ইনস্টলেশন প্রক্রিয়া শুরু করে।
প্রধান প্যাকেজ ম্যানেজমেন্ট টুলসমূহঃ ডেবিয়ান এ বেশ কিছু প্যাকেজ ম্যানেজমেন্ট টুলস ব্যবহার করা হয়।

প্রধান প্রধান টুলসগুলি হচ্ছেঃ

dpkg – ডেবিয়ান প্যাকেজ ফাইল ইনস্টলার
apt-get – APT এর জন্য কমান্ড লাইন ইন্টারফেস
aptitude – APT এর জন্য এ্যাডভ্যান্সড টেক্সট এবং কমান্ড লাইন বেসড ইন্টারফেস
synaptic – APT এর জন্য Gtk GUI বেসড ইন্টারফেস
dselect – মেনুভিত্তিক প্যাকেজ ম্যানেজার
tasksel – টাস্ক ইনস্টলার
  • apt দ্বারা সফটওয়্যার ইনস্টলের জন্য কমান্ড
#apt-get install software

-h সাহায্য দেখার জন্য
-d শুধুমাত্র ডাউনলোড এর জন্য- ইনস্টল বা আর্কাইভ খোলার জন্য নয়
-f যদি ইনটেগ্রিটি ফেইল করে তারপর চালানোর জন্য
-s শুধুমাত্র সিমুলেশন এর জন্য। কোন প্যাকেজ ইনস্টল হবে না।
-y সব অপশনের ইয়েস সিলেক্ট করবে অটোমেটিক এবং কোন প্রম্পট দেখাবে না
-u সমস্ত আপগ্রেডেড প্যাকেজসমূহ দেখার জন্য
যদি কোন ইনস্টলকৃত প্রোগ্রাম নষ্ট হয়ে যায় অথবা যদি আপনি কোন সফটওয়্যার এর নতুন ভার্সন ইনস্টল করতে চান পুরনোটি বাদ দিয়ে তাহলে আপনি --reinstall কমান্ডটি ব্যবহার করতে পারেন নিচের মতঃ

# apt-get --reinstall install packagename

আপনার sources.list ফাইল এর প্যাকেজসমূহ এর লিস্ট নবায়ন করতে নিচের কমান্ডটি দিনঃ
#apt-get update

apt এর সাহায্যে সফটওয়্যার আপডেট করার জন্য নিচের কমান্ডঃ
#apt-get -u upgrade

apt এর মিরর লিস্ট সমূহ পরিবর্তন করার কমান্ড
#apt-setup

প্যাকেজ বা প্রোগ্রাম খুজতে হলে কমান্ড
#apt-cache search package

apt দিয়ে প্রোগ্রাম আনইনস্টল করার কমান্ড
#apt-get remove software

  • কিছু শর্টকার্ট কমান্ড
প্যাকেজ লিস্ট আপডেট করার কমান্ড
# apt-get update

বর্তমান লভ্য প্যাকেজ লিস্ট আপডেট করুন
# dselect update

ইনস্টলকৃত প্যাকেজ আপডেট করুন
# apt-get upgrade

প্যাকেজ ইনস্টল এর কমান্ড
# apt-get install pkg

প্যাকেজ আনইনস্টল করুন
# apt-get remove pkg

সমস্ত ইনস্টলকৃত এবং রিমুভকৃত প্রোগ্রাম দেখার জন্য
#dpkg -l

প্যাকেজ এর ইনস্টল স্ট্যাটাস দেখুন
#dpkg -l pkg

সমস্ত প্যাকেজ দেখুন যেগুলি প্যাটার্ন এর সাথে মিলে যায়
#dpkg -S pattern

প্যাকেজ লিস্ট দেখার জন্য যে অক্ষরগুলির সাথে মিলে
#dpkg

প্যাকেজ এ যে সমস্ত ফাইল আছে তার লিস্ট দেখার জন্য
#dpkg -L pkg

প্যাকেজ এর বর্তমান স্ট্যাটাস দেখার জন্য
#dpkg -s pkg
প্যাজেক এর বিস্তারিত দেখার জন্য
#dpkg -p pkg

প্রাসঙ্গিক প্যাকেজ লিস্ট দেখার জন্য
#apt-cache search string

ডেব ফাইল থেকে প্যাকেজ ইনস্টল করার জন্য
# dpkg -i file.deb

প্যাকেজ শুদ্ধিকরন করা
# dpkg -P pkg

একটি প্যাকেজকে পুনরায় কনফিগার করার জন্য
# dpkg-reconfigure pkg

প্যাকেজ এর সোর্স কোড পাওয়ার জন্য
# apt-get source pkg

build-deps কনফিগার করুন সোর্স এর জন্য এবং যেমন প্রয়োজন ইনস্টল করুন
# apt-get build-dep

কোন বিশেষ রিলিজড ভার্সন ইনস্টল করুন
# apt-get -t release install pkg

bootup এর সময় রান হওয়া বন্ধ করার জন্য
# update-rc.d -f name remove

ডিস্ট্রিবিউশন আপগ্রেড করুন
# apt-get –u dist-upgrade

  • কি করে জানতে হবে যে কোন কোন প্যাকেজ সমূহ আপগ্রেড করা প্রয়োজন
apt-show-versions এমন একটি প্রোগ্রাম যার সাহায্যে সিস্টেম এ কোন কোন প্রোগ্রাম আপডেট করা প্রয়োজন তা দেখা যায় এবং আরো বেশ কিছু দরকারী তথ্য ও দেখা যায়।

-u অপশনটি যে সমস্ত প্যাকেজ আপগ্রেড করা সম্ভব তার লিস্ট দেখিয়ে থাকে যার কমান্ডটি হচ্ছে নিম্নরূপঃ
# apt-show-versions -u
APT অর্থাৎ এ্যাডভান্সড প্যাকেজ টুল এর টেক্সট মোডের ক্ষেত্রে পছন্দনীয় কমান্ড হচ্ছে aptitude। এটি আপনি কোন প্যাকেজগুলি ইচ্ছানুযায়ী ইনস্টল করেছেন এবং কোন প্যাকেজগুলি ডিপেনডেন্সী হিসেবে ডাউনলোড করেছেন তা মনে রাখে। ডিপেনডেন্সী প্যাকেজগুলি স্বয়ংক্রিয়ভাবে সে আনইনস্টল করে যখন এগুলি আর কোন প্যাকেজ কর্তৃক প্রয়োজন হয় না। এটির আরো উন্নত ধরনের প্যাকেজ ফিল্টারিং সিস্টেম রয়েছে তবে সেটি কনফিগার করাটা কিছুটা কঠিন মনে হতে পারে।

aptitude update: বর্তমান এ সহজলভ্য প্যাকেজসমূহের লিস্ট আপডেট করে থাকে (পূর্বের কমান্ড apt-get update.)

aptitude upgrade: সহজলভ্য প্যাকেজসমূহকে আপগ্রেড করে থাকে (পূর্বের কমান্ড apt-get upgrade).

aptitude dist-upgrade: আপগ্রেড করার জন্য বিভিন্ন কম্পোনেন্টস মুছে ফেলার দরকার হলেও করবে (পূর্বের কমান্ড apt-get dist-upgrade).

aptitude install pkgname: প্যাকেজ ইনস্টলের কমান্ড (পূর্বের কমান্ড apt-get install).

aptitude remove pkgname: প্যাকেজ আনইনস্টলের কমান্ড (পূর্বের কমান্ড apt-get remove).

aptitude purge pkgname: প্যাকেজ এবং কনফিগ ফাইল সবকিছু রিমুভ করবে (পূর্বের কমান্ড apt-get –purge remove).

aptitude search string: প্যাকেজ সার্চের কমান্ড - “string” সম্বলিত নাম অথবা বর্ননা রয়েছে এমন প্যাকেজ খুজে বের করে (পূর্বের কমান্ড apt-cache search string).

aptitude show pkgname: একটি প্যাকেজের বিস্তারিত দেখার জন্য(পূর্বের কমান্ড apt-cache show pkgname).

aptitude clean: ডাউনলোডকৃত প্যাকেজ ফাইল মুছে ফেলার জন্য (পূর্বের কমান্ড apt-get clean).

aptitude autoclean: বর্তমান প্রচলিত ভার্সনগুলি রেখে অপ্রচলিত প্যাকেজ ফাইলগুলি মুছে ফেলবে (পূর্বের কমান্ড apt-get autoclean).

aptitude hold pkgname: একটি প্যাকেজকে তার ভার্সনেই অক্ষুন্ন রেখে সমস্যাগুলি ঠিক করবে এবং স্বয়ংক্রিয়ভাবে আপডেট করবে না (পূর্বের কমান্ড an obscure echo-to-file command). unhold ব্যবহার করুন যেটি hold আছে সেটিকে unhold করতে।

  • একটি কার্যকরী sources.list
একটি জাকালো পদক্ষেপই খুব ভালো মানের একটি sources.list ফাইল তৈরীর জন্য যথেষ্ট নয়। বরং আপনার সবচেয়ে নিকটে অবস্থিত এমন কোন সাইট পছন্দ করাই সব থেকে ভাল apt-setup ব্যবহারের মাধ্যম।

apt-spy sources.list স্বয়ংক্রিয়ভাবে তৈরী করে থাকে ব্যান্ডউইথ এবং পর্যাপ্ত সাড়া প্রদানের উপর নির্ভর করে।

netselect-apt আরো পূর্নাঙ্গ sources.list তৈরী করে থাকে, কিন্তু পিং টাইম তুলনা সিস্টেমে তা করে যা মোটেও মানসম্পন্ন কোন পদ্ধতি নয়।

# aptitude install apt-spy
# cd /etc/apt ; mv sources.list sources.list.org
# apt-spy -d testing -l sources.apt


  • dpkg-divert কমান্ড

ফাইল ডাইভারশন পদ্ধতির সাহায্যে একটি ফাইলকে তার ডিফল্ট লোকেশনে ইনস্টল না করে অন্য কোন লোকেশনে ইনস্টল করা যায়। ডেবিয়ান প্যাকেজ স্ক্রিপ্টের সাহায্যে একটি ফাইলকে সরিয়ে নেয়া যায় ডাইভারশন পদ্ধতির সাহায্যে যখন এটি কোনভাবে কনফ্লিক্ট করে থাকে। সিস্টেম অ্যাডমিনিস্ট্রেটরগন ডাইভারশন সিস্টেম ব্যবহারের মাধ্যমে একটি প্যাকেজ এর কনফিগারেশন ফাইলগুলি বদলে দিতে পারেন, অথবা কিছু ফাইলকে যদি dpkg কর্তৃক সংরক্ষিত করা দরকার হয়ে থাকে- একটি নতুন ভার্সনের প্যাকেজ ইনস্টলের সময়ে যখন ঐ প্যাকেজে এ ফাইলগুলি থাকতে পারে।

# dpkg-divert [--add] filename # add "diversion"
# dpkg-divert --remove filename # remove "diversion"


  • যদি dpkg কমান্ড এর কাজ সঠিকভাবে সম্পন্ন না হয় তখন কি করবেন?

একটি অসম্পন্ন dpkg যেকোন .deb ফাইলের ইনস্টলের ক্ষেত্রে প্রতিবন্ধকতা হয়ে দাড়াতে পারে। নিচের বর্নিত পদ্ধতির সাহায্যে আপনি এ সকল অবস্থা থেকে পরিত্রান পেতে পারেন। (প্রথম লাইনে "links" এর জায়গায় আপনার পছন্দের ব্রাউজার কমান্ড এর নাম দিতে পারেন)

$ links http://http.us.debian.org/debian/pool/main/d/dpkg/
... download the good dpkg_version_arch.deb
$ su
password: *****
# ar x dpkg_version_arch.deb
# mv data.tar.gz /data.tar.gz
# cd /
# tar xzfv data.tar.gz

i386 এর জন্য http://packages.debian.org/dpkg লিংকটি URL হিসেবে ব্যবহার করা যেতে পারে।

  • লোকাল প্যাকেজ আর্কাইভ তৈরী করা
APT এবং dselect সিস্টেম এর সাথে সংগতিপূর্ন লোকাল প্যাকেজ আর্কাইভ তৈরী করার জন্য প্রথমেই প্যাকেজগুলিকে তৈরী করতে হবে তারপর সেটি একটি নির্দিষ্ট ডিরেক্টরীতে রাখতে হবে।

নিচের পদ্ধতির সাহায্যে ডেবিয়ান এর অফিসিয়াল আর্কাইভের মত একটি লোকাল ডেব রিপজিটরী তৈরী করা যেতে পারেঃ

# aptitude install dpkg-dev
# cd /usr/local
# install -d pool # ফিজিক্যাল প্যাকেজ সমূহ এখানে অবস্থিত
# install -d dists/unstable/main/binary-i386
# ls -1 pool | sed 's/_.*$/ priority section/' | uniq > override
# editor override # adjust priority and section
# dpkg-scanpackages pool override /usr/local/ \
> dists/unstable/main/binary-i386/Packages
# cat > dists/unstable/main/Release <<>> /etc/apt/sources.list


  • দ্রুত ডেব রিপজিটরী নিচের ভিন্ন পদ্ধতিতেও করা যায়ঃ
# aptitude install dpkg-dev
# mkdir /usr/local/debian
# mv /some/where/package.deb /usr/local/debian
# dpkg-scanpackages /usr/local/debian /dev/null | \
gzip - > /usr/local/debian/Packages.gz
# echo "deb file:/usr/local/debian ./" >> /etc/apt/sources.list


এ আর্কাইভকে আপনি HTTP বা FTP এর মাধ্যমে দূর থেকে ও ব্যবহার করতে পারবেন তবে সেক্ষেত্রে /etc/apt/sources.list ফাইলে একইসাথে পাথ দেখিয়ে দিতে হবে।

  • auto-apt কমান্ড

auto-apt হচ্ছে একটি চাহিদা মাফিক প্যাকেজ ইনস্টলেশন টুলস।

$ sudo auto-apt update
... update database
$ auto-apt -x -y run
Entering auto-apt mode: /bin/bash
Exit the command to leave auto-apt mode.
$ less /usr/share/doc/med-bio/copyright # access non-existing file
... Install the package which provide this file.
... Also install dependencies

  • প্যাকেজ ম্যানেজমেন্ট এর সাধারন সমস্যাসমূহ

সমস্যা যেকোন সময়ই হতে পারে কিন্তু বেশীরভাগ ক্ষেত্রেই যথাযথ ভাবে ব্যবহারকারীর মনোনিবেশ না করার কারনেই তা হয়ে থাকে। নিচে কিছু সমস্যা যা প্রায়ই ঘটে থাকে তার রিপোর্ট এবং কিভাবে তার সমাধান করতে হবে তা দেয়া হলঃ

apt-get install package কমান্ড দেয়ার সময় যদি আপনি নিচের মত ম্যাসেজ পেয়ে থাকেন

Reading Package Lists... Done
Building Dependency Tree... Done
W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory)
W: You may want to run apt-get update to correct these missing files
E: Couldn't find package penguineyes


তাহলে আপনি apt-get update কমান্ড দিতে ভুলে গিয়েছিলেন /etc/apt/sources.list ফাইলে সর্বশেষ পরিবর্তনের পর।

যদি নিচে মত সমস্যা দেখায়ঃ

E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
when trying any apt-get method other than source, you don't have root permission, that is, you're running as a normal user.


উপরের মত সমস্যা দেখা যায় যদি আপনি apt-get এর দুটো কপি একই সাথে চালাতে যান অথবা এমনকি যদি dpkg প্রসেস চালু থাকা অবস্থায় apt-get চালাতে যান । একমাত্র সোর্স মেথড ই একসাথে একের অধিক চলতে পারে অন্যগুলি নয়।

যদি কোন প্রসেস হঠাৎ করেই বন্ধ হয়ে যায় এবং যদি দেখেন যে প্যাকেজটিকে ইনস্টল বা রিমুভ কোনটিই করা যাচ্ছে না তখন নিচের দুটি কমান্ড ব্যবহার করে চেষ্টা করতে পারেনঃ

# apt-get -f install
# dpkg --configure -a


এবং আবার চেষ্টা করুন। উপরের দ্বিতীয় কমান্ডটি একের অধিকবার রান করা লাগতে পারে। এটি খুব গুরুত্বপূর্ন তাদের জন্য যারা প্রায়ই আনস্ট্যাবল ভার্সন নিয়ে পরীক্ষা নিরীক্ষা করে থাকেন।

যদি আপনি "E: Dynamic MMap ran out of room" এ এররটি পান apt-get update কমান্ড চালানোর সময় তবে নিচের লাইনটি /etc/apt/apt.conf ফাইলে যোগ করুনঃ

APT::Cache-Limit 10000000;