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

উইন্ডোজে সফটওয়্যার ইনস্টল করার জন্য বিখ্যাত 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;

0 comments:

Post a Comment